2013-05-08 99 views
1

我在使用OAuth2時遇到了棘手的情況。Google API OAuth2:處理無效令牌

  1. 通過向用戶詢問認證開始。他授予訪問權限,將憑證存儲在商店中(DB,GAE Datastore等)。

  2. 轉到您的谷歌的個人資料中的授權訪問和撤銷 應用

  3. 返回到應用程序,啓動導致API調用(與驅動器API測試 )

  4. 行動應用程序正在從商店中檢索憑證。測試證書有效期 (NOT NULL和無效的屬性爲False)

  5. 調用API

  6. 檢索401,未經授權的例外。

在有效調用API之前,如何檢測證書無效? 也許這是與憑據工作的方式?

感謝您的幫助。

回答

0

您存儲什麼憑證?訪問令牌?刷新令牌?

考慮使用tokeninfo端點,https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=

+0

我存儲執行OAuth步驟2時獲得的憑證對象。根據文檔(https://developers.google.com/api-client-library/python/指南/ aaa_oauth#step2_exchange)它包含兩個。 – 2013-05-28 02:18:28

+0

您可以調用tokeninfo來獲取您的訪問令牌的有效性,但是如果它已過期並且您可以使用刷新令牌檢索新的令牌,則無法預測。 – 2013-05-29 08:27:50

0

使用前的access_token,調用[tokeninfo]在GoogleAPI第一(總,如果它是一個新的甚至的access_token)。我浪費了幾個小時來解決這個問題。 我對Windows應用程序的工作流程:

  1. 的oauth2 - > *的access_token(* - 未驗證)
  2. GoogleAPI.tokeninfo與[ACCESS_TOKEN *] - > 「確定」 或 「無效」
  3. 如果「確定「 - 使用請求的權限