[英]How to get access token and refresh token after user login and consent in Google OAuth2?
我想通過Google API導入Gmail
用戶的聯系人。
我有以下幾點:
使用Client secret and key
來獲取授權的URL。 這是用戶訪問以允許我的應用程序許可的URL。
授權的URL重定向到App設置中指定的重定向uri。
我在url中有一個查詢參數code
,我猜這是文檔在這里說的授權代碼。
問題:
如果可能,我想交換此代碼以通過javascript
獲取access token
和refresh 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種授權類型:
如果您需要更多詳細信息,可以閱讀這篇不錯的文章並附帶說明。
您已經指出了適用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.