Google地图协调OAuth范围问题

时间:2014-03-26 13:34:36

标签: google-maps google-apps-script oauth-2.0 google-api google-apps

我正在尝试使用OAuth2与Google Maps Coordinate进行身份验证,但在指定我希望Auth令牌有效的范围时,我遇到了问题。我用来请求访问代码的URL采用以下格式:

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id={client id}&redirect_uri={App URL}&approval_prompt=force&scope=https://www.googleapis.com/auth/coordinate

我遇到的问题是,同意屏幕只是说"此应用程序希望:具有离线访问功能"。它没有提及授予与Google Maps Coordinate交互的权限。我开始认为这是Google的一个错误,因为如果我尝试通过将.readonly添加到网址的末尾来获取只读令牌,则同意屏幕会显示"此应用想:查看您的Google Coordinate Jobs"。同样,如果我将coordinate替换为docsdrive,我会获得正确的同意屏幕,其中应用请求访问和修改Google云端硬盘内容的权限。

如果我使用坐标范围获得一个令牌,并且#34;具有离线访问权限"权限,然后使用该令牌尝试和请求协调,我只是得到"权限不足"错误。

在尝试获取Maps Coordinate的访问代码时,似乎只会出现此问题。还有其他人遇到过这个问题吗?

由于

2 个答案:

答案 0 :(得分:1)

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

您在请求网址approval_prompt=force中使用,也就是说,始终会要求用户授予权限。接下来是,您获得了一个刷新令牌(除非用户明确删除了他的帐户中的应用权限),但您必须exchange for an access token才能获得刷新令牌。

这也是原因,你总是得到“这个应用程序想:有离线访问”。一旦您允许特定范围,它将不再显示在同意屏幕中。

docsdrive同意屏幕显示正确,因为您没有给他们留下遗产。

我基本上看到了两种可能性:不要使用批准提示(因此在第一次授权后跳过同意屏幕,只需在用户点击允许的情况下重定向,但不点击允许)或{{3} }。

或者为您的帐户试用exchange the token to a refresh token

答案 1 :(得分:0)

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