Google calendar api 谷歌日历资源API

Google calendar api 谷歌日历资源API,google-calendar-api,google-admin-sdk,Google Calendar Api,Google Admin Sdk,我有一个现有的Google Marketplace应用程序,当它安装后,会代表用户拨打各种电话来提取Google数据,并且运行良好。它确实使用了GoogleAdminSDK,目前主要是目录API 我想开始使用谷歌日历资源API,但遇到了麻烦。目前,我的应用程序主要使用两条腿的OAuth1(希望OAuth2很快就会出现)。我已将范围添加到我的测试应用程序清单中。但是,任何获取信息(“”)的调用都会因“未知授权标头”而失败。使用相同客户机类的其他调用工作正常,包括目录API 日历资源API是否不支持

我有一个现有的Google Marketplace应用程序,当它安装后,会代表用户拨打各种电话来提取Google数据,并且运行良好。它确实使用了GoogleAdminSDK,目前主要是目录API

我想开始使用谷歌日历资源API,但遇到了麻烦。目前,我的应用程序主要使用两条腿的OAuth1(希望OAuth2很快就会出现)。我已将范围添加到我的测试应用程序清单中。但是,任何获取信息(“”)的调用都会因“未知授权标头”而失败。使用相同客户机类的其他调用工作正常,包括目录API

日历资源API是否不支持市场上的两条腿OAuth1?我在OAuth2游乐场中尝试了相同的作用域和URL,效果很好。我无法通过以下方式找到旧的OAuth1游乐场(退役?

解决方案:


确切的代码有点难以共享,因为存在相互关联的类等等,但下面是使用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>')
oauth_参数={
:授权\u uri=>“https://www.google.com/accounts/OAuthAuthorizeToken",
:令牌\u凭证\u uri=>“https://www.google.com/accounts/OAuthGetAccessToken",
:client\u credential\u key=>config.google\u marketplace\u consumer\u key
:client\u credential\u secret=>config.google\u marketplace\u consumer\u secret
}
client=Signet::OAuth1::client.new(oauth_args)
client.two_legged=真
client.requestor_id=owner.email
get(:uri=>'https://apps-apis.google.com/a/feeds/calendar/resource/2.0/')
返回的结果:

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>
Signet::AuthorizationError:授权失败。服务器消息:
未知授权标头
未知授权标头
错误401

请注意,我可以使用完全相同的生成代码并调用目录API,然后得到一个结果。

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

  'Content-Type': 'application/atom+xml',
  'Authorization': 'Bearer ' + accessToken,
  'X-JavaScript-User-Agent': "Google APIs Explorer"
其中accessToken是存储具有API启用权限的管理员(即超级管理员)的访问令牌的变量