php實現第三方登入

2022-05-06 19:33:09 字數 1455 閱讀 3653

1. oauth2.0原理

**為了方便使用者快速的登入系統,都會提供使用知名的第三方平台賬號進行快速登入的功能,第三方登入都是基於oauth2.0標準來實現的。下面詳細分析【基於賬號密碼授權】和【基於oauth2.0標準授權】的原理和oauth2.0授權的優點。

1.1 賬號密碼授權方式

使用者到**發起使用其他平台賬號登入的指令,第三方平台**就向使用者索取賬號和密碼,使用者將賬號和密碼提供第三方**之後,**使用使用者提供的賬號和密碼去登入服務商,取回使用者的資訊。這就是使用賬號和密碼授權登入的流程。

存在的問題:

一、服務商的賬號和密碼都洩漏給了第三方平台,導致安全性問題;

二、使用者要收回授權,只能通過修改密碼來實現,若是有多個第三方**都是用

同乙個服務商授權登入,那麼所有第三方**的授權都被收回來了;

分析:假設我們想要收回授權給當前**的賬號和密碼,又不可能讓第三方主動放棄已給

三、很難實現給不同的**,授予不同的許可權;

1.2 oauth原理和授權流程

為了解決上述傳統的賬號密碼授權方式存在的問題,oauth專案組制定了oauth標準,目的在於為api訪問授權提供乙個開放的標準;oauth是針對訪問授權的乙個開放標準,與以往的授權方式不同之處是oauth的授權不會使第三方觸及到使用者的帳號資訊(如使用者名稱與密碼),即第三方無需使用使用者的使用者名稱與密碼就可以申請獲得該使用者資源的授權,因此oauth是安全的。oauth是open authorization的簡寫。服務商和第三方平台依據oauth標準來編碼,服務商可以實現乙個安全的授權機制,第三方應用呼叫服務商資源也有了統一性,服務商和第三方依據統一的標準來實現自己的功能。

使用者向第三方**發起請求,請求使用其它平台授權登入,這個時候第三**並不是直接的要求使用者提供其它平台的賬號和密碼,而是引導使用者瀏覽器跳轉到服務商的授權登入頁面,使用者在服務商的**頁面進行登入完成授權。所以解決了剛才的第乙個問題,使用者不需要給第三方使用者透露賬號和密碼。登入授權之後,服務商就會生成乙個一次性的用來訪問資源的訪問碼,我們叫做令牌,這個令牌包含了使用者、第三方**、資源許可權的資訊。生成這個令牌之後,服務商又引導使用者瀏覽器攜帶這個令牌跳回第三方**的頁面,**接收這個令牌後,第三方**就可以攜帶令牌作為憑證訪問服務商上面有許可權訪問的資源。在這個過程中,使用者沒有洩漏賬號和密碼給第三方,成功授權登入,並且限制了第三方訪問的服務資源的許可權。

下面是oauth2.0授權流程圖

第一步:請求code

若提示「該鏈結無法訪問」,請檢查引數是否填寫錯誤,如redirect_uri的網域名稱與審核時填寫的授權網域名稱不一致或scope不為snsapi_login。

使用者允許授權後,將會重定向到redirect_uri的**上,並且帶上code和state引數

第二步:通過code獲取access_token

返回說明:

第三步:通過access_token呼叫介面:

1. access_token有效且未超時;

對於介面作用域(scope),能呼叫的介面有以下:

第三方登入

我的應用就可以通過token第三方應用獲取一些基本資訊了,我的應用在獲取到這些基本資訊之後,就可以在我的應用中建立乙個賬號了。下次使用地方登入獲取到的這些使用者資訊,就可以直接用來登入我的應用了。為什麼先返回code呢?這個返回的code只能夠使用一次。這個code是從qq的伺服器返回給 時,我們時...

第三方登入

分類 android 2014 03 26 10 24 329人閱讀收藏 舉報 android android開發 第三方登入 名詞說明 access toekn 授權成功後返回的token,用於呼叫第三方api 第三方登入的主要作用 1 使用第三方賬號資訊來初始化自己的賬號 暱稱 頭像等資訊 第三...

shareSdk第三方登入

紀錄一下sharesdk第三方登入的主要 整合請參照mob注意事項 android name wxapi.wxentryactivity android configchanges keyboardhidden orientation screensize android exported true...