我遵循OAuth1到OAuth2迁移文档,并且能够获得新的refresh_token和access_tokens。
问题是,Google再次显示审批屏幕并列出所有范围。迁移凭据的重点是用户不应该看到批准屏幕。
这是我的迁移POST请求:
POST https://accounts.google.com/o/oauth2/token HTTP / 1.1 授权:OAuth realm ="",oauth_consumer_key = [消费者] KEY]",oauth_nonce =" 2c06a5da90ec4a62b737bdfb3922d675",oauth_signature_method =" HMAC-SHA1",oauth_timestamp =" 1411677478",组oauth_token =" [OAUTH TOKEN]",oauth_signature =" OL%2b2JdOBCKcND8cSHSmHQMRN5NI%3D" 内容类型:application / x-www-form-urlencoded主机: accounts.google.com内容长度:194期望:100-continue 连接:保持活力 grant_type =瓮%3aietf%3aparams%3aoauth%3agrant型%3amigration%3aoauth1&安培; CLIENT_ID =安培; client_secret = [GENERATED SIGNATURE]
此外,如果我检查https://security.google.com/settings/security/permissions?pli=1页面以查看我已授予访问权限的应用程序,我会在那里看到我的新应用程序,其中包含旧应用程序具有的所有范围。
我还确保我不包含 approval_prompt = force
有什么想法?假设用户在迁移后没有看到批准屏幕,我错了吗?
答案 0 :(得分:1)
您是对的,迁移凭据的重点是用户不应该看到批准屏幕。但是,如果您添加了任何新的范围,可能会使用某些API,其中大多数都要求用户授予权限,因此将再次显示批准屏幕。
答案 1 :(得分:1)
您能否澄清步骤以及用户何时看到批准页面?迁移后您的OAuth2令牌有哪些范围?
迁移是针对您存储在后端的OAuth1令牌。使用迁移步骤,您可以将这些转换为OAuth2刷新令牌。您可以开始使用这些来调用Google API,而无需用户在您的网站上显示。
根据您获得这些OAuth1令牌的方式,您需要更改该机制以开始获取OAuth2令牌。一般情况下,您只想为已经存储了刷新令牌的用户执行此操作,因为没有必要获得新的刷新令牌(如果这样做,他们可能会看到批准屏幕)。