鍍金池/ 問答/PHP  C/ OAuth2.0授權(quán)碼模式的流程

OAuth2.0授權(quán)碼模式的流程

有篇博客是這樣寫的OAuth2.0授權(quán)碼模式的流程:

授權(quán)碼模式(authorization code)授權(quán)的流程:

采用Authorization Code獲取Access Token的授權(quán)驗(yàn)證流程又被稱為Web Server Flow,適用于所有有Server端的應(yīng)用,如Web/Wap站點(diǎn)、有Server端的手機(jī)/桌面客戶端應(yīng)用等。一般來說總體流程包含以下幾個(gè)步驟:

1、通過client_id請(qǐng)求授權(quán)服務(wù)端,獲取Authorization Code。

2、通過Authorization Code、client_id、client_secret請(qǐng)求授權(quán)服務(wù)端,在驗(yàn)證完Authorization Code是否失效以及接入的客戶端信息是否有效(通過傳遞的client_id和client_secret信息和服務(wù)端已經(jīng)保存的客戶端信息進(jìn)行匹配)之后,授權(quán)服務(wù)端生成Access Token和Refresh Token并返回給客戶端。

3、客戶端通過得到的Access Token請(qǐng)求資源服務(wù)應(yīng)用,獲取需要的且在申請(qǐng)的Access Token權(quán)限范圍內(nèi)的資源信息。

問題:
建立一個(gè)場(chǎng)景來說問題可能清晰一點(diǎn):
場(chǎng)景:比如在抖音上第一次使用微信登錄,用戶的操作是:在抖音里面點(diǎn)擊微信圖標(biāo)后,會(huì)跳轉(zhuǎn)到一個(gè)有登錄按鈕的頁面,點(diǎn)擊登錄按鈕一個(gè)動(dòng)作即可完成登錄,對(duì)照上面的博客寫的三個(gè)步驟,問題如下:

問題1:第1步說,“通過client_id請(qǐng)求授權(quán)服務(wù)端”,cilent_id是什么時(shí)候生成的?
問題2:第2步說,“授權(quán)服務(wù)端生成Access Token和Refresh Token并返回給客戶端”,這里的“返回給客戶端”是返回給抖音服務(wù)器還是抖音手機(jī)app?
問題3:授權(quán)過程一共有三個(gè)角色,如下圖所示:

clipboard.png

當(dāng)用戶在抖音的微信登錄界面按下登錄按鈕后,抖音app是直接發(fā)送請(qǐng)求到微信服務(wù)器完成授權(quán),還是抖音app發(fā)送請(qǐng)求到抖音服務(wù)器,然后由抖音服務(wù)器向微信服務(wù)器發(fā)送請(qǐng)求完成授權(quán)?

請(qǐng)大佬幫捋一捋這個(gè)流程,有點(diǎn)亂,謝謝。

回答
編輯回答
夏木

1、client_id是抖音在使用微信登錄之前,在微信開放平臺(tái)上創(chuàng)建抖音APP后獲得的
2、抖音服務(wù)器
3、先到抖音服務(wù)器,抖音服務(wù)器再構(gòu)造一個(gè)授權(quán)URL,然后重定向到這個(gè)授權(quán)URL,這里的URL指的就是微信的授權(quán)服務(wù)器

2018年1月20日 09:56
編輯回答
別傷我

問題1:
抖音里面用戶可以通過微信登錄的前提是抖音先向微信申請(qǐng)一下權(quán)限。就是說抖音向微信請(qǐng)求說“允許你的用戶登錄抖音吧~”,然后微信如果同意抖音的申請(qǐng)的話就會(huì)給抖音一個(gè)client_id和client_secret。

問題2:
應(yīng)該直接返回到抖音服務(wù)器,抖音服務(wù)器拿到后再考慮如何使用(比如cookie,session或者存數(shù)據(jù)庫(kù)之類的)

問題3:

clipboard.png
點(diǎn)擊這個(gè)微信的小圖標(biāo)后,先請(qǐng)求抖音的服務(wù)器,抖音的服務(wù)器上會(huì)重新構(gòu)建一個(gè)url作為向微信請(qǐng)求授權(quán)的地址(比如帶上redirect_uri,grant_type,client_id等參數(shù)),然后重定向到新構(gòu)建的這個(gè)url

2018年9月6日 12:05