繁体   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