簡體   English   中英

在hybridauth中恢復訪問令牌

[英]Restore Access Token in hybridauth

我在我的數據庫中保存了訪問令牌(使用此方法:getAccessToken()),但現在我想將此值恢復為對象。

我怎樣才能做到這一點?

這在hybridauth用戶手冊中有解釋,代碼如下:

  // get the stored hybridauth data from your storage system $hybridauth_session_data = get_sorted_hybridauth_session( $current_user_id ); 

Get_sorted_hybridauth_session是獲取存儲數據的內部函數。 無論您是將數據存儲在名為“external_token”的字段中的表中,還是通過正常的SQL查詢獲取它,然后將其提供給下面的函數:

  // then call Hybrid_Auth::restoreSessionData() to get stored data $hybridauth->restoreSessionData( $hybridauth_session_data ); // call back an instance of Twitter adapter $twitter = $hybridauth->getAdapter( "Twitter" ); // regrab te user profile $user_profile = $twitter->getUserProfile(); 

$ hybridauth-> restoreSessionData($ hybridauth_session_data); 將恢復序列化的會話對象,然后它將為其保存的任何提供程序獲取適配器。 最好的方法是將提供程序名稱(在本例中為Twitter)保存在與external_provider類似的數據庫表中,然后您可以通過sql auery獲取它並將其提供給getAdapter函數。 那應該做你需要做的事情。

手冊示例如下:

http://hybridauth.sourceforge.net/userguide/HybridAuth_Sessions.html

=============

作為一個附加信息 - 我在測試中看到的是,以這種方式保存會話並不會阻止hybridauth記錄用戶,即使用戶在此期間已從應用程序中撤消了訪問權限。 即,如果用戶已經登錄並獲得授權,但是,單獨轉到應用程序並撤銷訪問權限(例如google),hybridauth仍會將用戶登錄到您的系統。 我目前正試圖找到一種方法來確保用戶也登錄到遠程系統。

晚了,但我認為這會有所幫助:

以下代碼驗證並刪除了用戶未真正登錄的HybridAuth提供程序:

$providers = $this->hybridauthlib->getConnectedProviders();

foreach( $providers as $connectedWith ){
    $p = $this->hybridauthlib->getAdapter( $connectedWith );
    try {
        $p->getUserProfile();
    } catch (Exception $e) {
        $p->logout();
    }
}

暫無
暫無

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

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