簡體   English   中英

用戶登錄並在Google OAuth2中同意后,如何獲取訪問令牌和刷新令牌?

[英]How to get access token and refresh token after user login and consent in Google OAuth2?

我想通過Google API導入Gmail用戶的聯系人。

我有以下幾點:

  1. 使用Client secret and key來獲取授權的URL。 這是用戶訪問以允許我的應用程序許可的URL。

  2. 授權的URL重定向到App設置中指定的重定向uri。

  3. 我在url中有一個查詢參數code ,我猜這是文檔在這里說的授權代碼。

問題:

如果可能,我想交換此代碼以通過javascript獲取access tokenrefresh token 但是我在javascript中看不到這部分的任何文檔。

在我的服務器端,我這樣做是為了獲得authorized url

token = gdata.gauth.OAuth2Token(client_id=settings.GMAIL_CLIENT_ID,
                                client_secret=settings.GMAIL_API_KEY,
                                scope=scope, user_agent=user_agent)

auth_url = token.generate_authorize_url(redirect_uri=redirect_uri)

然后將用戶重定向到auth_url 現在,一旦用戶允許了所請求的權限,他們就會使用查詢參數code重定向回我的站點。 我想從這里使用javascript獲取access token

另一個選擇是,一旦用戶被重定向到我的站點,就在服務器端獲取access token ,並將其與響應一起返回給他,但是我真的不想這樣做。

簡短的答案 :如果您想使用OAuth2客戶端身份驗證,則使用的是錯誤的文檔。

現在的細節。

OAuth2具有4種授權類型:

  1. 授權碼
  2. 隱式
  3. 資源所有者密碼憑證
  4. 客戶憑證

如果您需要更多詳細信息,可以閱讀這篇不錯的文章並附帶說明。

您已經指出了適用OAuth2 for Web Servers的Google文檔,它適合授權代碼類型。 它依賴於通過SSL進行Web服務器數據交換,因為它涉及交換client_secret

即,如果您嘗試執行POST請求以使用JavaScript獲取access_token ,則將公開client_secret ,因為它是POST調用中的必需參數。

如果要嘗試請求不使用服務器端代碼的access_token ,則需要使用“ 隱式”授予類型。

您可以在對客戶端應用程序使用OAuth 2.0中找到有關隱式授予類型的Google文檔。

暫無
暫無

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

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