2014-02-07 63 views
3

我正在使用PHP Google客戶端庫。我成功地從用戶/谷歌獲得令牌和刷新令牌以用於API。 一旦用戶撤銷許可,我的網站在谷歌網頁上谷歌的設置我得到以下錯誤:在Google API中檢測應用程序的已撤銷權限

Error calling GET https://www.googleapis.com/calendar/v3/users/me/calendarList: (401) Invalid Credentials 

這是預期的行爲,因爲用戶撤銷我的許可。 但是,如何檢測用戶是否已取消該訪問?

目前我做以下,看看我是否有機會獲得:

//$token json fetched from database 
$gclient->setAccessToken($token); 
if ($gclient->getAccessToken()) 
    //i should have access 

嗯,這代碼遺憾的是不檢測的撤銷許可。我該如何處理?

+0

撤銷許可後,你會得到你試圖獲得的授權無效例外下一次訪問令牌。 – pinoyyid

回答

0

由於缺乏授權,Google API只應返回401。由於您之前已經獲得授權,因此收到401是用戶撤銷訪問的可靠指示。

您是否正在尋找一種檢測機制,在進行API調用之前通知您這些更改?今天,Google沒有推送通知機制可以通知您的應用此類事件。當然,基於拉的機制沒有用 - 您可以簡單地進行API調用並更有效地處理401。

+0

是的。我想知道用戶是否撤銷了訪問權限。 – Merion

+0

這不是一個答案,這是一個評論:/ –

2

一旦檢測到用戶已經撤消了權限,您可以再次向用戶請求授予權限。

檢測到該補助金已被撤銷:前提是你有過授權,

  • 用一種吊銷access_token將導致與狀態代碼響應的API調用。像這樣

    { "error": { "errors": [ { "domain": "global", "reason": "authError", "message": "Invalid Credentials", "locationType": "header", "location": "Authorization" } ], "code": 401, "message": "Invalid Credentials" } }

  • 試圖刷新令牌撤銷後,將導致與狀態代碼和invalid_grant消息的響應。正如在RFC 6749, Section 5.2

    invalid_grant The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.

    規定這裏是這樣迴應的例子:

    { "error" : "invalid_grant" }

相關問題