在HybridAuth中还原访问令牌

Jro*_*ger 2 oauth access-token hybridauth

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

我怎样才能做到这一点?

uni*_*100 5

在hybridauth用户手册中使用以下代码对此进行了说明:

  // get the stored hybridauth data from your storage system
   $hybridauth_session_data = get_sorted_hybridauth_session( $current_user_id );
Run Code Online (Sandbox Code Playgroud)

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();
Run Code Online (Sandbox Code Playgroud)

$ hybridauth-> restoreSessionData($ hybridauth_session_data); 将恢复序列化的会话对象,然后将为其保存的任何提供程序获取一个适配器。最好也将提供者名称(在这种情况下为Twitter)与external_provider之类的内容保存在同一数据库表中,然后可以通过sql auery获取它并将其提供给getAdapter函数。那应该做你需要做的。

手动示例如下:

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

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

作为附加信息-我在测试中看到的是,即使用户同时撤消了从应用程序的访问权限,以这种方式保存会话也不会阻止hybridauth登录用户。即,如果用户已经登录并获得授权,但是单独进入该应用并撤消了访问权限(例如Google),hybridauth仍将用户登录到您的系统。我目前正在尝试寻找一种确保用户也登录到远程系统的方法。