Tag: 谷歌 的OAuth

Google Marketplace App / OAuth2 – 以编程方式委派全域授权

上下文 我目前正在迁移基于OAuth 1.0 / OpenId的应用程序以使用OAuth 2.0。 该应用程序是一个用Java构建的Google App Engine应用程序,将在新的应用程序市场2.0中。 我已经为个人用户提供了基本的OAuth 2.0流程,但是我在下面的方案中设置服务帐户时遇到了问题。 问题 我试图启用的流程如下: 域管理员从应用市场安装应用 域管理员授予请求的范围(例如,管理员sdk,个人资料,电子邮件等) 来自新域的用户可以在没有任何范围权限提示的情况下登录 当用户登录时,我的应用程序的服务帐户可以使用admin sdk访问新域的用户详细信息,以检查用户是否为管理员 为了启用#4,我的理解是我的应用服务帐户需要被授予针对新用户域的请求范围的域范围授权。 Google文档显示了如何通过域管理员通过管理控制台( https://developers.google.com/drive/web/delegation )手动完成此操作,但我没有运气找到有关如何以编程方式提供的文档/自动授予访问我的应用服务帐户的权限。 题 有人有运气吗? 或者是否有另一种/更聪明的方法来检查用户是否是他们域的​​管理员,而无需使用服务帐户+ admin sdk combo? 提前致谢!

Google Webmasters API for Java返回空站点列表

我编写了一个简单的网站列表查询代码,该代码使用Oauth和基于Google 文档的 服务帐户 。 正在使用的身份validation密钥文件(.p12)以及帐户都是有效的。 问题是站点列表方法返回一个空列表。 service.sites().list().execute(); 此外,如果我明确尝试通过调用获取经过validation的站点的站点地图 service.sitemaps().list(“my.sample.site.com”).execute(); 我收到了403 Forbidden – “用户没有足够的权限访问网站’sample.site.com’。另请参阅: https : //support.google.com/webmasters/answer/2451999 。” 来自API的错误。 根据我的调试,API完美地加载密钥文件(.p12)并管理访问令牌等没有问题。 尽管如此,我的服务帐户身份validation可能存在问题。 依赖关系: com.google.apis google-api-services-webmasters v3-rev6-1.20.0 示例代码: package webmastertools; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.webmasters.Webmasters; import com.google.api.services.webmasters.WebmastersScopes; import com.google.api.services.webmasters.model.SitesListResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.io.File; import java.util.Collections; public class GoogleWebmastersClient { […]

如何使用Java访问Google Calendar REST API v3

我正在开发一个项目,我必须使用REST访问一组Google日历并使用Java。 该程序位于私人非Google服务器上,定期(通过cron作业)连接到Google帐户,获取链接到该帐户的日历列表,获取每个日历的上个月的事件,并返回包含所有日历的XML文件信息。 该程序应该能够在没有任何用户输入的情况下执行和访问日历。 目前,该项目指定只读取日历,而不是修改日历(因此只会进行GET / LIST调用)。 我查看了Google文档并使用客户端库查看了示例代码,并且在访问日历API之前,几乎所有给出的示例都需要OAuth 2.0用户同意。 甚至REST API文档页面也要求您激活OAuth 2.0以返回所请求的信息(否则返回HTTP 40X错误代码和包含错误状态和消息的JSON文件)。 我如何连接到Google Calendar REST API以获取我需要的信息,一切都是通过REST调用完成的,并且在执行时无需用户同意? 或者我是否过于复杂,只需要在Google云端控制台的Resgistered Apps部分中找到“服务器密钥”? 或者我是否要求同时使用OAuth和开发人员密钥? (我发现有人在标题下提到它:Google Calendar API v3硬编码凭据;然而,问题和解决方案是针对PHP的,我不知道Java中是否可能存在类似的东西)。 我确实看到了创建一个带有服务帐户的JWT的可能性(使用Google云控制台,注册为Web应用程序,并且它位于’证书’下),但是我没有找到如何将这个与REST调用一起使用一个Java程序。 以下链接( http://aleksz-programming.blogspot.be/2012/11/google-calendar-api.html )表示可以通过“Web服务器应用程序”或“已安装的应用程序”访问信息,但不能不详细说明。 但是,在Google OAuth 2.0文档页面上,“Web服务器应用程序”部分仍需要用户输入和同意。 这是真的吗? 我还找到了此页面( https://developers.google.com/accounts/docs/OAuth2Login ),但未能看到如何在不使用用户同意页面的情况下使用它。 我确实看到了一些“双腿OAuth”的引用。 但似乎这不是OAuth 2.0,而是版本1是做事。 这是我项目的可能解决方案吗? 如果是这样,我需要从Google Cloud Console获取哪些信息才能使其正常运行? 我希望我已经提供了足够的信息来说明我正在寻找什么,而且到目前为止还没有涵盖这个问题。 我做了研究,并没有找到足够接近我所寻找的东西。 我无法发布超过2个链接(缺乏声誉),但确实查看了Google Calendar v3 REST API,以及指定创建JWT的页面。

谷歌云端点(app engine)+ oauth2与android集成

我正在尝试将谷歌应用引擎云端点API与Android集成。 我已经按照这个链接进行了相同的操作: 无法使用我的服务对象连接到我的Google端点 https://cloud.google.com/appengine/docs/java/endpoints/consume_android 基于Java的Google App Engine,Android和身份validationoauth2 这是我的Android应用程序端代码和应用程​​序引擎端点代码: **** @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Profile profile = new Profile(); profile.setDisplayName(“Alex roger”); profile.setAge(49l); new EndpointsAsyncTask(this).execute(profile); } **** public class EndpointsAsyncTask extends AsyncTask { private MyApi myApiService; private Context context; SharedPreferences settings; GoogleAccountCredential credential; private static final String PREF_ACCOUNT_NAME = “PREF_ACCOUNT_NAME”; public EndpointsAsyncTask(Context context) […]

google oauth2如何获取服务帐户的私钥

有人可以告诉我如何从服务帐户的谷歌云控制台下载证书。 我正在寻找各地。 我已经下载了应用程序授权凭证“client_secret.json” client_secret.json有一个键“client_x509_cert_url”,它将我带到json文件中,该文件中嵌入了2个证书。 这是证书吗? 如果他们是如何在java代码中使用它。 我在这里有点迷茫。

使用Google电子表格进行OAuth2身份validation时出现问题

我正在使用java库进行oauth2身份validation来访问谷歌电子表格。 我使用以下代码进行OAuth2身份validation: credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) .setTokenServerEncodedUrl(“https://accounts.google.com/o/oauth2/token”) .setServiceAccountScopes(“https://www.googleapis.com/auth/drive”, “https://spreadsheets.google.com/feeds”, “https://docs.google.com/feeds”) .setServiceAccountPrivateKeyFromP12File(new File(“xxxxx-privatekey.p12”)).build(); 获得“凭证”后,使用以下代码阅读电子表格: SpreadsheetService service = new SpreadsheetService( “MySpreadsheetIntegration”); service.setOAuth2Credentials(credential); URL SPREADSHEET_FEED_URL = new URL(“https://spreadsheets.google.com/feeds/spreadsheets/private/full”); SpreadsheetFeed feed = service.getFeed(SPREADSHEET_FEED_URL, SpreadsheetFeed.class); System.out.println(feed.getTotalResults()); 执行上面的代码会给我回到总结果0。 如果我使用: service.setUserCredentials(“email”, “password”); 代替oauth2身份validation,它给了我正确的结果。 不确定OAuth2身份validation有什么问题。 此外,当我从“凭证”对象打印“访问令牌”时,它会打印一个有效的访问令牌。