从Google OAuth 1.0迁移到OAuth 2.0期间出现问题

时间:2014-04-07 12:58:31

标签: google-oauth

我必须从Google OAuth 1.0迁移到OAuth 2.0。 我刚在Chrome Rest Client中写了一个小请求:

发布https://accounts.google.com/o/oauth2/token

标题:授权:OAuth realm ="",oauth_signature =" PU3W5uRL0eAyEi",oauth_nonce =" 1396865138306881000",oauth_signature_method = " HMAC-SHA1",oauth_consumer_key =" XXXXX.apps.googleusercontent.com",oauth_token =" YYYYY",oauth_timestamp =" 1396865138",内容类型:application / x-www-form-urlencoded

有效负载:grant_type = urn:ietf:params:oauth:grant-type:migration:oauth1& client_id = ZZZZZ.apps.googleusercontent.com& client_secret = SSSSS

为此,我收到一条错误消息: 状态:400错误请求

" { 错误:" invalid_request" error_description:"无效的授权标题。" }"

问题可能是我尝试从Google Developers Console中的一个Project迁移到另一个Project。 这真的是个问题吗?

我之所以搬到另一个项目是因为我无法在原始项目中创建OAuth 2.0客户端ID。我收到以下错误消息:

" 您无法创建OAuth 2.0客户端ID,因为此项目已包含Oauth 1.0客户端ID。"

请建议。

谢谢你, ë

2 个答案:

答案 0 :(得分:0)

正如在similar post中指出的那样,在构建基本字符串以签署迁移请求时,请确保该字符串使用 POST方法并且包含所有相关迁移参数,根据迁移文档。

根据OAuth1 spec,迁移请求的有效基本字符串应如下所示:

POST&安培; https://accounts.google.com/o/oauth2/token&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=urn:ietf:params:oauth:grant-type:migration:oauth1&oauth_consumer_key=YOUR_CONSUMER_KEY&oauth_nonce=NONCE&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1396414006&oauth_token=THE_TOKEN_TO_MIGRATE

请注意,出于可读性目的,以上是基本字符串的解码版本(有关更多示例,请查看OAuth1 spec)。

希望有所帮助,Miguel。

答案 1 :(得分:0)

生成基本字符串时,您需要确保在构造基本字符串之前对每个单独的参数进行URL编码。

根据sign OAuth 1.0 requests的oAuth文档,基本字符串由3个组件组成

  • HTTP请求方法
  • 请求发送到
  • 的基本网址
  • 请求中的参数的标准化字符串

构建基本字符串时,需要执行以下操作

  • 确保HTTP请求方法为POST
  • URL对基本网址进行编码
  • 确保三个POST正文参数[client_id,client_secret,grant_type]包含在规范化请求参数中
  • 确保每个参数都是单独的URL编码,然后对完整的规范化请求参数字符串进行URL编码。所以实际上,一些参数是双URL编码的。对于oauth_token
  • Using OAuth with the Google Data APIs#Signing Requests中提到了这种双重URL编码

只有在完成所有这些步骤后,才能使迁移请求生效,并且我收到了有效的refresh_token

以下是基本字符串示例

POST&https%3A%2F%2Faccounts.google.com%2Fo%2Foauth2%2Ftoken&client_id%3Dxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com%26client_secret%3Dxxxxxxxxxxxx%26grant_type%3Durn%253Aietf%253Aparams%253Aoauth%253Agrant-type%253Amigration%253Aoauth1%26oauth_consumer_key%3Dxxxxxxxxx%26oauth_nonce%3D4106001%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1400779530%26oauth_token%3D1%252FkklP1YPy_AULt7j_tttttt_tterwerkj_dfj45dflk