我在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领域="",oauth_signature =" ZFA3Cx8Gxyz4YRmELO6uu2urOsM%3D",oauth_nonce =" 618148508599347",oauth_signature_method =" HMAC-SHA1" ,oauth_consumer_key =" XXXXXX.apps.googleusercontent.com",oauth_token =" YYYY",oauth_timestamp =" 1386762587" 内容类型:application / x-www-form-urlencoded 内容长度:248 主持人:accounts.google.com 连接:保持活力 User-Agent:Apache-HttpClient / 4.1.1(java 1.5)
grant_type =瓮%3Aietf%3Aparams%3Aoauth%3Agrant型%3Amigration%3Aoauth1&安培;范围= HTTPS%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&安培; CLIENT_ID = TTTTTTT.apps.googleusercontent.com&安培; client_secret = ZZZZZZZZZZZZZ
另外,我的其他重要问题: 是否可以转换以下范围: https://www.googleapis.com/auth/userinfo.email 和 https://www.googleapis.com/auth/userinfo.profile
如果oauth1令牌仅授权 https://docs.google.com/feeds/ 吗?
我问,因为在谷歌应用程序市场配置中,例如,这些范围是默认的,并且无法删除。因此,在令牌迁移后获取这些范围会很棒。
答案 0 :(得分:1)
在迁移过程中无法更改已批准的范围列表。例外是需要缩小的情况。因此,如果OAuth1令牌对作用域A,B,C有效,则可以将其“缩减”为包含仅 A,B或C(或其任意组合)的OAuth2令牌。 )通过在迁移请求中包含scope参数。如果scope参数不存在,则迁移的OAuth2令牌将包含与原始OAuth1令牌相同的范围。
另一方面,如果请求包含的范围未包含在OAuth1令牌的已批准范围列表中,则请求将失败 - 这是您的迁移请求的情况(如www.googleapis)您的OAuth1令牌中不包含.com / auth / drive范围。)
希望有所帮助!
答案 1 :(得分:0)
OAuth1到OAuth2迁移不会影响您的应用程序已获得授权的范围集。大多数范围不是特定于OAuth1或OAuth2。范围指示用户(或在本例中为公司/小型企业IT管理员)已授予对您的应用程序的访问权限的API /数据集。唯一的例外是某些API只能接受OAuth2(因此有些范围仅在OAuth2令牌中非常有用)。
换句话说,如果您要将授权从OAuth1迁移到OAuth2,则会迁移相同的范围集。如果您需要访问新的API(在您的情况下,您似乎正在寻找新的范围来调用Google Drive API),则您需要OAuth1令牌已包含成功迁移的驱动器范围。