簡體   English   中英

從id_token獲取Google OAuth訪問令牌

[英]Getting a Google OAuth access token from an id_token

我使用帶有redirect_uri選項的Google身份驗證(以避免彈出窗口)。 當用戶登錄Chrome時,我可以獲得訪問令牌,但是在Safari中(例如),我不知道如何獲取訪問令牌。 重定向查詢字符串包含一個id_token,我可以使用此端點成功驗證它:

https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123

這給了我一些有關用戶的信息,但是我真正想要的是一個訪問令牌,因為我的后端API期望它。

我可以從id_token獲取訪問令牌嗎? 如果是這樣,怎么做。 我找不到任何例子。

說明:我不是要驗證我的應用,而是要從前端通過Google登錄進行身份驗證的用戶獲取id_token。

僅驗證用戶

如果您不使用Google API,而僅使用令牌來驗證用戶身份,則應僅驗證id_token而不使用訪問令牌。 id_token是一個OpenID Connect概念,用於通知客戶端(您的應用程序)有關當前登錄用戶的一些基本信息。

要驗證id_token您可以使用在 id_token描述了同樣多或相關問題 的文檔

代表您的用戶使用Google API

但是,如果要使用用戶名使用Google API,則需要一個access_token因為id_token通常不用於后端身份驗證。 為了獲得訪問令牌,用戶需要授權您的應用程序才能代表他們訪問Google API。 如果您使用的是gapi庫,則對Google API進行調用的過程可能大部分被隱藏了,但是它應該在某處具有訪問令牌。

Google的這份文檔描述了幕后發生的事情。

https://developers.google.com/identity/protocols/OAuth2

如果您想代表您的后端用戶訪問Google API,則可能需要遵循與前端所使用的流程不同的流程。 授權請求中的響應類型定義使用哪個進程(這就是為什么我問使用哪種響應類型的原因)。 但是gapi npm軟件包背后的Javascript庫似乎支持它,盡管使用它的方式可能不容易訪問。

https://developers.google.com/api-client-library/javascript/reference/referencedocs#googleusergetauthresponseincludeauthorizationdata

還簽出離線選項,也許這就是您要找的東西? 如果這樣做沒有幫助,您仍然可以查看我之前參考的Oauth2文檔頁面,以獲取指向其他選項/其他語言的鏈接以獲取身份驗證令牌。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM