0

codeigniter アプリケーションで Facebook ログインを使用しています。ログインを処理するようにコントローラーをセットアップしましたが、ユーザーが facebook にログインしていて、アプリケーションにログインしようとしているが認証されていない場合を除いて、すべてのユーザー状態のケースで動作しているようです。

これが私のFacebookコントローラーのインデックス関数です:

$data=array(
            'redirect_uri' => site_url('facebookcontroller/handle_facebook_login'),
            'scope' => 'publish_stream,email'
        );
        redirect($this->fbconnect->getLoginUrl($data));

->getLoginUrl() は、認証ページではなく、facebook のログイン ページのみに送信しますか?

どんな助けにも感謝します

4

1 に答える 1

1

古いバージョンの facebook SDK を使用しているようです。これらの機能の一部が機能しなくなったため、こちらをご覧になることをお勧めします。次に、誰かが facebook にログインしていて、次のようにプロファイル情報を要求する場合を考慮してください。

$data['user_profile'] = $profile = $this->facebook->api('/me');

古いアクセス トークンを使用している可能性があるため、次のようにその呼び出しを try-catch ブロックで囲む必要があります。

try {
        $data['user_profile'] = $profile = $this->facebook->api('/me');
    }catch (Exception $e){
    $this->facebook->setAccessToken($this->facebook->getAccessToken());
    try {

       if($this->facebook->getUser()) {
        $this->facebook->api(array('method' =>'auth.revokeAuthorization' ));
       }

    }catch(Exception $e) {

        redirect('<login controller>');
    }
    redirect('<login controller>');
    }
于 2012-12-08T03:14:24.990 に答える