通过服务帐户的Google+域名API失败,403 Forbidden

时间:2014-05-20 02:16:00

标签: ruby google-api-ruby-client google-domain-api

我有一个简单的Ruby代码,我从几个例子中结合起来。它使用Google+域名API。我按照所有步骤授权服务帐户(https://developers.google.com/+/domains/authentication/delegation),但我的请求失败了403 Forbidden:

{"error"=>{"errors"=>[
{"domain"=>"global", "reason"=>"forbidden", "message"=>"Forbidden"}], 
"code"=>403, "message"=>"Forbidden"}}

如果我使用Google API Explorer控制台执行它们,相同的查询工作正常。我认为这与服务帐户与用户帐户身份验证有关。我错过了什么?

完整代码在https://github.com/admitriyev/propellant/blob/master/main.rb

[已编辑]我在相同的代码中添加了已安装的应用流程,并且工作正常(完整代码在上面的Gihub上)。我仍然不知道我在服务流程中错过了什么。

1 个答案:

答案 0 :(得分:0)

我明白了,我错过了代表应该授权的实际域用户的电子邮件。我也转而使用Google :: APIClient :: JWTAsserter,它更干净 抽象:

client_asserter = Google::APIClient::JWTAsserter.new(
  config['client_email'],
  PLUS_LOGIN_SCOPE,
  key
)
$client.authorization = client_asserter.authorize(config['user_email'])

我的完整示例在这里:https://github.com/admitriyev/propellant/blob/master/main.rb