在hybridauth恢复访问令牌(Restore Access Token in hybridau

2019-07-31 16:11发布

在我的数据库,但现在我想这个值恢复到一个对象:我保存的访问令牌(getAccessToken()使用此方法)。

我怎样才能做到这一点?

Answer 1:

这在下面的代码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仍将登录的用户到你的系统。 林目前正试图找到一种方法,以确保用户登录到远程系统了。



Answer 2:

晚了,但我认为这将有所帮助:

下面的代码验证,并从HybridAuth那些提供商的用户没有真正登录到:

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

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


文章来源: Restore Access Token in hybridauth