This是導致我問這個問題的評論。訪問令牌失效後谷歌API無效請求
我有一個服務器端Node.js應用程序,使用googleapis包。用戶使用他們的Google帳戶登錄,並在會話中存儲令牌。是我得到的憑據,如下所示
{ access_token: '<AN ACCESS TOKEN>',
token_type: 'Bearer',
id_token: '<A LONG ID TOKEN>',
expiry_date: <A TIMESTAMP> } // why do some places say there's an expires_in instead of this
有沒有refresh_token
因爲用戶已經登錄的第一次,並點擊接受,我沒有保存刷新令牌(貌似我應該)。
所以,當達到expiry_date
時,如果用戶試圖發出請求爲我們的東西保存到自己的谷歌驅動器,我得到一個錯誤信息:
{ [Error: invalid_request] code: 400 } // ...no further details
我的2部分的問題:
我認爲我收到錯誤消息,因爲在我的OAuth客戶對象是的access_token過期(因爲令牌過期之前調用正常工作)。它是否正確?爲什麼錯誤信息不是更詳細?
在頂部的鏈接答案中,解決方案是再次強制接受提示,獲取刷新令牌並永久存儲它,並在過期時使用它來獲取新的訪問令牌。爲什麼這是一個更好的選擇,而不僅僅是檢查令牌是否過期,並且在我們想要調用API時讓用戶重新認證?哪種「正確」方式可確保我的登錄用戶始終能夠通過驅動器API調用來保存他們的文檔?
它看起來像您使用的是過時的端點內省令牌,因爲'expires_in'確實是由谷歌在最近的端點 –
@HansZ實施的標準行爲。你能否在這裏澄清術語「端點」和「反思」?我在node.js上使用了最新版本的google apis客戶端。 –