谷歌日历资源API



我有一个现有的Google Marketplace应用程序,安装后,可以代表用户进行各种调用以提取Google数据,并且工作正常。它确实使用Google Admin SDK,现在主要是Directory API。

我想开始使用 Google 日历资源 API,但遇到了问题。目前,我的应用程序主要使用2条腿的OAuth1(希望OAuth2即将推出)。我已将范围 https://apps-apis.google.com/a/feeds/calendar/resource/添加到测试应用程序清单中。但是,任何获取信息("https://apps-apis.google.com/a/feeds/calendar/resource/2.0/")的调用都会失败,并显示"未知授权标头"。使用相同客户端类的其他调用工作正常,包括目录 API。

日历资源 API 是否不支持通过市场的两条腿 OAuth1?我已经通过 OAuth2 游乐场尝试了相同的范围和 URL,它工作正常。我无法找到旧的OAuth1游乐场(已退役?

KRH 在修订版 2 中的解决方案:


确切的代码很难共享,因为有相互连接的类等等,但这里基本上是使用 Ruby Signet 客户端库生成客户端的原因。

    oauth_args = {
      :authorization_uri => "https://www.google.com/accounts/OAuthAuthorizeToken",
      :token_credential_uri =>"https://www.google.com/accounts/OAuthGetAccessToken",
      :client_credential_key => config.google_marketplace_consumer_key
      :client_credential_secret => config.google_marketplace_consumer_secret
  }
  client = Signet::OAuth1::Client.new(oauth_args)
  client.two_legged = true
  client.requestor_id = owner.email
  client.get(:uri => 'https://apps-apis.google.com/a/feeds/calendar/resource/2.0/<test domain>')

返回的结果:

Signet::AuthorizationError: Authorization failed.  Server message:
<HTML>
<HEAD>
<TITLE>Unknown authorization header</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unknown authorization header</H1>
<H2>Error 401</H2>
</BODY>
</HTML>

请注意,我可以采用完全相同的生成代码并调用目录 API,并获得结果。

看起来您的标头不包含正确的授权。以下是使用 OAuth2 对我有用的方法:

  'Content-Type': 'application/atom+xml',
  'Authorization': 'Bearer ' + accessToken,
  'X-JavaScript-User-Agent': "Google APIs Explorer"

其中 accessToken 是一个变量,用于存储具有 API 启用权限的管理员(即超级管理员)的访问令牌

最新更新