天天看點

第三方登入access token過期問題

前幾天參加面試的時候,被面試官問道第三方登入的問題,流程其實很簡單,但是當面試官問為什麼要儲存access token,它過不過期有什麼意義。當時答得不是很對,現在總結一下:

第三方登入流程

  • 第一步:擷取 code:
https://graph.qq.com/oauth2.0/authorize?
response_type=code      //固定寫法
&client_id=" . $app_id . " //騰訊給的APPID
&redirect_uri=" . urlencode($my_url) . "   //回調位址
&state=". $_SESSION['state'];
$Scope="get_user_info" 這個是     //網站申請擷取使用者的資訊
           
  • 第二步:根據 code 擷取 access_token
https://graph.qq.com/oauth2/token?
grant_type=authorization_code       //固定寫法
&client_id=[YOUR_APP_ID]        //APP_ID
&client_secret=[YOUR_APP_Key]       //APP_KEY
&code=[The_AUTHORIZATION_CODE]  //Authorization Code 的值
&state=[The_CLIENT_STATE]       //防止攻擊
&redirect_uri=[YOUR_REDIRECT_URI]   //回調
           
  • 第三步:使用Access Token來擷取使用者的OpenID
https://graph.qq.com/oauth2/me?access_token=YOUR_ACCESS_TOKEN 
           

openID使用者是在這個網站的辨別,使用者第一次登入還是再次登入就是用這個辨別的。通過openID和appID和access_token使用OpenAPI接口來擷取使用者的資訊。具體API的使用請閱讀第三方提供方的文檔。

進入正題,要了解access_token的作用,和他為什麼有三個月的過去問題,那麼我們必須了解兩點:

1.網站什麼時候擷取到access_token?

當使用者點選第三方登入圖示,并授權允許登入,這個時候網站才能擷取到access_token。

2.access_token的作用?

使用Access Token來擷取使用者的OpenID,然後可以使用OpenID來擷取使用者的資訊。

從上面兩步就可以看出,當使用者授權登入到網站後,網站就可以擷取到這個access_token。這個時候假如,假如access_token沒有過期時間,那麼以後網站可以使用儲存下來的access_token來永久的擷取使用者的資訊,這樣當然不可以啦,是以第三方規定了access_token有三個月的時間,如果使用者在三個月後都沒有登入過這個網站,那麼這個網站所儲存的access_token也就過期了,再也不能擷取使用者新的資訊了,隻有等到下一次使用者重新授權登入的時候,網站從新擷取access_token才能再次擷取使用者資訊。

繼續閱讀