【问题标题】:Scopes validation error on oauth1 3lo to oauth2 tokens migrationoauth1 3lo 到 oauth2 令牌迁移的范围验证错误
【发布时间】:2013-12-29 19:06:44
【问题描述】:

我在从 oauth1 到 oauth2 令牌迁移时遇到错误:请求的范围之前没有得到批准。

范围 https://docs.google.com/feeds/
https://spreadsheets.google.com/feeds/
https :/ /docs.googleusercontent.com/

已获得 oauth1 令牌的授权,这足以让 GAMv1 迁移到 GAMv2(目标 OAuth2 范围为 https://www.googleapis.com/auth/drive)。

我尝试使用https://developers.google.com/accounts/docs/OAuth_ref中描述的api

这是我的请求示例:

POST /o/oauth2/token HTTP/1.1 授权:OAuth realm="", oauth_signature="ZFA3Cx8Gxyz4YRmELO6uu2urOsM%3D", oauth_nonce="618148508599347", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="XXXXXX.apps.googleusercontent.com", oauth_token="yYY_timest", “1386762587” 内容类型:application/x-www-form-urlencoded 内容长度:248 主机:accounts.google.com 连接:保持活动 用户代理:Apache-HttpClient/4.1.1 (java 1.5)

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Amigration%3Aoauth1&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&client_id=TTTTTTT.apps.googleusercontent.com&client_secret=ZZZZZZZZZZZZZ

另外,我的情况中的其他重要问题: 是否可以转换以下范围: https://www.googleapis.com/auth/userinfo.emailhttps://www.googleapis.com/auth/userinfo.profile

如果 oauth1 令牌仅授权给 https://docs.google.com/feeds/
我问是因为在谷歌应用市场配置中,例如,这些范围是默认的,不能被删除。因此,在令牌迁移后获得这些范围会很棒。

【问题讨论】:

    标签: google-oauth


    【解决方案1】:

    在迁移期间无法更改已批准范围的列表。需要缩小范围的情况除外。因此,如果 OAuth1 令牌对范围 A、B、C 有效,则可以将其“缩减”为包含 A、B 或 C(或它们的任意组合)的 OAuth2 令牌) 通过在迁移请求中包含范围参数。如果范围参数不存在,则迁移的 OAuth2 令牌将包含与原始 OAuth1 令牌相同的范围。

    另一方面,如果请求包含的范围未包含在 OAuth1 令牌的已批准范围列表中,则请求将失败 - 您的迁移请求就是这种情况(如 www.googleapis .com/auth/drive 范围不包含在您的 OAuth1 令牌中)。

    希望有帮助!

    【讨论】:

    • 感谢您的回答,但很遗憾在这种情况下我们无法使用此 api,因为我们不想使用已弃用的 api。
    【解决方案2】:

    OAuth1 到 OAuth2 的迁移不会影响您的应用程序已获得授权的范围集。大多数范围并不特定于 OAuth1 或 OAuth2。范围指示用户(或在本例中为企业/小型企业 IT 管理员)已授予对您的应用程序的访问权限的 API/数据集。唯一的例外是某些 API 只能接受 OAuth2(因此有些范围仅在 OAuth2 令牌中真正有用)。

    换句话说,如果您想将您的授权从 OAuth1 迁移到 OAuth2,则将迁移 same 组范围。如果您需要访问新的 API(在您的情况下,您似乎正在寻找一个新的范围来调用 Google Drive API),您需要 OAuth1 令牌已经包含驱动器范围才能成功迁移。

    【讨论】:

    • 那么,无法将 Google Documents List API 范围转换为 Drive API 范围?这很令人困惑,因为在 GAMv1 到 GAMv2 的迁移过程中可能会出现这种情况,因为 Google Documents List API 已被弃用,建议使用 Drive API 作为替代品。
    猜你喜欢
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    相关资源
    最近更新 更多