[英]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.