2013-04-16 15 views
1

我试图获取服务帐户的Google OAuth 2.0访问令牌,但收到invalid_granterror。我检查了我的各种工件(私钥等)和时钟计时,但迄今尚未能解决此问题。服务器到服务器应用程序的OAuth 2.0:两个或三个参数? (或者:某些Google工程师可能不会计为三次?:)

有这似乎很奇怪一个可能相关的项目:谷歌的documentation

参数都需要在HTTPS POST,以下分别进行

其次是显示 一个表格两个行指定两个参数参数(grant_typeassertion)。难道是需要三分之一吗(我见过的例子也以某种方式使用assertion_type)? Google的工程师(或者你的真正的)不可能数到三个吗? :)

总结:什么是适当的参数? Google目前的文档似乎还不清楚。

更新:以下是一些进一步的信息:我不能使用Google API客户端库,因为我的应用程序需要的语言不是Google当前不支持的语言。因此,我必须执行创建和签署JWT等的逻辑,正如通常所不鼓励的那样。我已经确认我的服务帐户构件是按顺序的:我可以将它们与Google API客户端库Java一起使用,以访问相同的日历(与我的目标平台不同)。特别是,我的“client_id”格式为“... @ developer.gserviceaccount.com”,我的密钥是128位RSA私钥,这两个密钥均可从Google APIs Dashboard获得。

回答

1

我现在已经能够确认它是两个参数,而不是三个。谷歌的documentation似乎是正确的,因为它命名这两个参数(grant_typeassertion)但错误,因为它将它们称为三个参数。

证据两个参数来自一个电流Internet-DraftJSON网络令牌(JWT)承载标记配置文件对的OAuth 2.0),它定义RFC 6749下一个扩展交付式(OAuth 2.0已授权框架)。

证据还包括在我的(非Java)实现中尝试了由Google API客户端库(并通过日志记录显示)获得的逐字访问令牌:使用此访问令牌已使invalid_grant错误消失。

(在我的代码中,现在显然存在形成SHA256withRSA签名的问题,但这是另一个问题......)

相关问题