2

アクセス トークンを (このメソッドを使用して: getAccessToken ()) データベースに保存しましたが、この値をオブジェクトに復元したいと考えています。

これどうやってするの?

4

2 に答える 2

5

これは、ハイブリッド認証のユーザー マニュアルで以下のコードで説明されています。

  // 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

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

追加情報として-テストで見たのは、この方法でセッションを保存しても、ユーザーがその間にアプリからのアクセスを取り消したとしても、ハイブリッド認証がユーザーのログインを妨げることはありませんでした。つまり、ユーザーがすでにログインして承認されているが、アプリに個別にアクセスしてアクセスを取り消した場合 (たとえば、Google)、hybridauth は引き続きユーザーをシステムにログインさせます。現在、ユーザーがリモート システムにもログインしていることを確認する方法を見つけようとしています。

于 2012-11-11T02:48:14.047 に答える
3

遅くなりましたが、これが役立つと思いました:

次のコードは、ユーザーが実際にログインしていないプロバイダーを検証し、HybridAuth から削除します。

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

foreach( $providers as $connectedWith ){
    $p = $this->hybridauthlib->getAdapter( $connectedWith );
    try {
        $p->getUserProfile();
    } catch (Exception $e) {
        $p->logout();
    }
}
于 2013-09-28T13:53:31.490 に答える