我必须从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。"
请建议。
谢谢你, ë
答案 0 :(得分:0)
正如在similar post中指出的那样,在构建基本字符串以签署迁移请求时,请确保该字符串使用 POST方法并且包含所有相关迁移参数,根据迁移文档。
根据OAuth1 spec,迁移请求的有效基本字符串应如下所示:
请注意,出于可读性目的,以上是基本字符串的解码版本(有关更多示例,请查看OAuth1 spec)。
希望有所帮助,Miguel。
答案 1 :(得分:0)
生成基本字符串时,您需要确保在构造基本字符串之前对每个单独的参数进行URL编码。
根据sign OAuth 1.0 requests的oAuth文档,基本字符串由3个组件组成
构建基本字符串时,需要执行以下操作
只有在完成所有这些步骤后,才能使迁移请求生效,并且我收到了有效的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