4

我試圖通過Google地圖協調中心使用OAuth2進行身份驗證,但在指定我希望Auth令牌有效的範圍時遇到問題。我使用的請求訪問代碼的URL的格式如下:Google地圖協調OAuth範圍問題

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地圖協調中心互動的權限。我開始認爲這是谷歌方面的一個錯誤,因爲如果我嘗試通過將.readonly添加到網址的末尾來獲得只讀令牌,則同意屏幕會顯示「此應用想要:查看您的Google協調作業」。同樣,如果我將coordinate替換爲docsdrive,我會得到正確的許可屏幕,其中應用請求訪問和修改Google雲端硬盤內容的權限。

如果我使用帶有「有離線訪問」權限的座標範圍獲取令牌,然後使用該令牌嘗試進行協調請求,我只會得到「權限不足」錯誤。

這個問題似乎只在嘗試獲取地圖座標的訪問代碼時發生。有其他人遇到過這個問題嗎?

謝謝

+0

您是否使用了新的[StateTokenBuilder] //developers.google.com/apps-script/reference/script/state-token-builder)與協調的身份驗證流程? –

回答

0

我想當它顯示離線訪問它意味着你已經接受這些權限之前。這有時發生在我身上,請嘗試撤銷舊的訪問權限,然後再次嘗試獲取新的令牌。轉到您的谷歌帳戶頁面(https://www.google.com/settings/personalinfo) - >安全 - >帳戶權限 - >查看全部,然後搜索地圖訪問並撤銷它,然後再試一次

1

這不是一個錯誤,這只是一個奇怪的行爲(也許是一個錯誤)。 (所以它可能不是100%正確的,我說的是)

您在您的請求url中使用approval_prompt=force,也就是說,用戶總是被要求提供權限。接下來是,你得到一個刷新令牌(不會過期,除非用戶明確地從他的賬戶中刪除了你的應用程序的許可),你必須exchange for an access token

這也是原因,你總是隻會得到「這個應用程序想要:有離線訪問」。一旦你允許特定的範圍,它不會再顯示在同意屏幕上。

docsdrive同意屏幕顯示的權利,因爲你沒有給他們的permsission。

我基本上看到兩種可能性:不要使用審批提示(因此在第一次授權後跳過同意屏幕,您將被簡單地重定向爲用戶點擊允許,但沒有點擊允許)或exchange the token to a refresh token

或嘗試revoking your permission爲您的帳戶。