【问题标题】:Restore Access Token in hybridauth在混合身份验证中恢复访问令牌
【发布时间】:2012-09-09 20:59:37
【问题描述】:

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

我该怎么做?

【问题讨论】:

    标签: oauth access-token hybridauth


    【解决方案1】:

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

    以下代码验证并从 HybridAuth 中删除用户未真正登录的提供者:

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

    【讨论】:

      【解决方案2】:

      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 仍将用户登录到您的系统。我目前正试图找到一种方法来确保用户也登录到远程系统。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-11
        • 2017-04-29
        • 1970-01-01
        • 2023-03-17
        • 2020-01-12
        • 1970-01-01
        • 2019-04-28
        • 2014-12-17
        相关资源
        最近更新 更多