谷歌地图坐标OAuth范围问题

4
我正在尝试使用OAuth2与Google Maps Coordinate进行身份验证,但在指定要为其有效的范围时遇到问题。我用于请求访问代码的URL格式如下:
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id={客户端ID}&redirect_uri={应用程序URL}&approval_prompt=force&scope=https://www.googleapis.com/auth/coordinate 我的问题是,同意屏幕只显示“此应用程序想要:具有离线访问权限”。它没有提到授予与Google Maps Coordinate交互的权限。我开始认为这是Google方面的错误,因为如果我尝试通过在URL末尾添加.readonly来获取只读令牌,则同意屏幕会显示“此应用程序想要:查看您的Google Coordinate作业”。同样,如果我将coordinate替换为docs或drive,则会得到正确的同意屏幕,其中应用程序请求权限以访问和修改Google Drive内容。
如果我使用具有“具有离线访问权限”的坐标范围获得令牌,然后使用该令牌尝试对坐标进行请求,我只会收到“权限不足”错误。
问题似乎仅在尝试获取Maps Coordinate的访问代码时发生。还有其他人遇到过这个问题吗?
谢谢。

你在使用 Coordinate 的身份验证流程时,是否使用了新的 StateTokenBuilder - Bryan P
2个回答

1

这不是一个错误,只是一种奇怪的行为(也许是bug)。 (所以我说的可能不是100%正确的)

您在请求URL中使用了approval_prompt=force,这意味着用户将始终被要求授权。接下来的步骤是,您会获得一个刷新令牌(除非用户明确从其帐户中删除对您应用程序的权限,否则该令牌不会过期),您必须交换访问令牌

这也就是为什么你总是只收到“此应用程序想要:拥有离线访问权限”。一旦您允许了特定范围,它将不再显示在同意屏幕上。

docsdrive同意屏幕显示正确,因为您没有为它们授予权限。

我基本上看到了两种可能性:不使用批准提示(因此在第一次授权后跳过同意屏幕,您将被简单地重定向为用户点击允许,但没有点击允许),或者将令牌交换为刷新令牌

或者尝试撤销你的账户权限


0

我认为当它显示“离线访问”时,这意味着您以前已经接受了这些权限。这有时会发生在我身上,尝试撤销旧的访问并再次获取新的令牌。转到您的Google帐户页面(https://www.google.com/settings/personalinfo)-->安全性-->帐户权限-->查看全部,然后搜索地图访问并撤销它,然后再试一次。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接