谷歌+域名API通过服务帐户失败,403禁止



我有一个简单的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上)。我仍然不知道我在服务流程中错过了什么。

我想明白了,我错过了应该代表谁授权的实际域用户的电子邮件。我还切换到使用Google:: apicclient::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

相关内容

  • 没有找到相关文章

最新更新