在我的数据库,但现在我想这个值恢复到一个对象:我保存的访问令牌(getAccessToken()使用此方法)。
我怎样才能做到这一点?
在我的数据库,但现在我想这个值恢复到一个对象:我保存的访问令牌(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); 将恢复序列化会话对象,然后它会得到哪个提供商保存它的适配器。 它的最好的,你也是在同一个数据库表的东西,如external_provider保存提供程序名称(微博在这种情况下),然后你可以得到它通过SQL auery和饲料它getAdapter功能。 这应该做你需要做什么。
该手册的例子是如下所示:
http://hybridauth.sourceforge.net/userguide/HybridAuth_Sessions.html
=============
作为一个额外的信息 - 我在我的测试中看到的是,这种方式并不妨碍hybridauth在注销用户节省会话,即使用户已经撤消了在此期间该应用程序的访问。 也就是说,如果用户已经登录和授权,但是,单独去应用程序,并撤销访问(谷歌为例),hybridauth仍将登录的用户到你的系统。 林目前正试图找到一种方法,以确保用户登录到远程系统了。
晚了,但我认为这将有所帮助:
下面的代码验证,并从HybridAuth那些提供商的用户没有真正登录到:
$providers = $this->hybridauthlib->getConnectedProviders();
foreach( $providers as $connectedWith ){
$p = $this->hybridauthlib->getAdapter( $connectedWith );
try {
$p->getUserProfile();
} catch (Exception $e) {
$p->logout();
}
}