2012-02-17 17 views
1

Facebook PHP SDKを使用してユーザーを認証しています。 PHP SDKを使用してLoginUrlを生成した後、ユーザはLoginUrlをクリックすると、許可を求めるFacebookページにリダイレクトされます。 Go to Appリンクをクリックすると、ユーザーは自分のウェブサイトhttp://www.mydomain.com/login/facebook_connectにリダイレクトされます。Facebook PHP SDK - ユーザーが認証されていません

問題:http://www.mydomain.com/login/facebook_connectにあるPHPスクリプトは、ユーザーがFacebook経由でログインしたことを判別できません。この時点で$user = $facebook->getUser();は0です。

私は間違っていますか?ありがとう! LoginUrl

を生成したページの

PHPコード

require 'libs/fb-php-sdk/facebook.php'; // Create our Application instance $facebook = new Facebook(array( 'appId' => '123', 'secret' => '123' )); // Get User ID $user = $facebook->getUser(); // Get Login URL $loginUrl = $facebook->getLoginUrl(array( "scope" => "email,user_education_history,user_work_history", "redirect_uri" => "http://www.mydomain.com/login/facebook_connect/" )); $data['fb_login_url'] = $loginUrl; $this->load->view('splash', $data); 

PHPコードは、ページのユーザーのためのFacebookの認証後にリダイレクトされる

*のhttp://www.mydomain.com/login/ facebook_connect/*

require 'libs/fb-php-sdk/facebook.php'; 

    $facebook = new Facebook(array(
     'appId' => '123', 
     'secret' => '123', 
    )); 

    // See if there is a user from a cookie 
    $user = $facebook->getUser(); 

    // We may or may not have this data based on whether the user is logged in. 
    // 
    // If we have a $user id here, it means we know the user is logged into 
    // Facebook, but we don't know if the access token is valid. An access 
    // token is invalid if the user logged out of Facebook. 

    if ($user) { 
     try { 
     // Proceed knowing you have a logged in user who's authenticated. 
     $user_profile = $facebook->api('/me'); 
     } catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
     } 
    } 

    print_r($user_profile); 
    echo $user; 
+0

facebookがサイトにリダイレクトされたときに、完全なURLを確認しましたか? access_tokenパラメータが必要です。 –

+0

'next'の代わりに' redirect_uri'を使ってリダイレクションがうまく動いています。 'ます。http:? – Nyxynyx

+0

これは私が戻ってFacebookの認証ページから自分のサイトへのリダイレクト後に取得したURLである//www.mydomain.com/facebook_pickup.php状態= f210c06a9854f43edd12bdb57993e1da&コード= AQCUp3YsSVNa2LfnKR1EXr_wq3BapIHJ5qr7nNury0fJQidb-nnkn2ZIxImMvN92CtiLwkZTmmzWelv9Lt8EDor2Q2YmKSDI6OoFTiNe8OZdDLLO5YATYA4-Bc1_y8qOcwOzq8-gzj4u__BwuLJLJFYe4e4plXgREYK6EbTXB872QCtz2aiSen0dpHPSdkfXncs#_ = _'ありaccess_tokenパラメータはありません。 – Nyxynyx

答えて

1

$ facebook-> getUser()は、Cookieを使用してユーザーを取得します。 CodeIgniterや、PHPが自動的に割り当てるクッキーを "食べる"ライブラリを使用する場合は、CIの外にあるプロキシページを作成し、そのクッキーをピックアップしてCIにリダイレクトする必要があります。(しますprint_rを除く)

http://www.mydomain.com/facebook_pickup.php 

は、スクリプトから何かをエコーし​​ません。つまり

は、あなたが現在

http://www.mydomain.com/login/facebook_connect/ 

にしたコードと通常のPHPファイルにコピーを作成するために取ります

http://www.mydomain.com/login/facebook_connect/ 

にリダイレクトされ、魔法のように動作します。

+0

Codeigniterがそのコントローラ機能のためだけにクッキーを自動的に食べるのを防ぐための方法はありますか? – Nyxynyx

+0

「http:// www.mydomain.com/facebook_pickup.php」にだけ入れることができますか$ facebook = new Facebook(配列( 'appId' => '123'、 'secret' => '123'、 )); //クッキーのユーザーがいるかどうかを確認する $ user = $ facebook-> getUser(); ' 'にアクセスし、 'http://www.mydomain.com/login/facebook_connectの$ facebookと$ userにアクセスします/ 2回目のリダイレクト後に? – Nyxynyx

2

すべては正しいようです。

質問:
1.-私は右、http://www.mydomain.com/は、すべてのスクリプトが含まれているものと? 012- 2.-コードシニターを使用していますか?またはcodeigniterベースのCMSですか?その場合、セッションの問題が発生する可能性があります(CIでは非常に一般的です)。それを確認して、続行します...


EDIT 2:クッキー関連の問題の場合。ここでは、簡単にクッキーを追跡するためにクッキーモジュールと放火犯を使用することができるよう示す画像がある:

enter image description here

だから、Facebookのクッキーが生成されているか確認することができます。


編集3:OK。あなたはCIを使用しており、あなたのFBクッキーは削除されています。多分セッションの問題です。ここではrelated answerですが、セッションCIのライブラリの置き換え方法を説明しています。これは、一般に、このような厄介な問題をすべて解決します。私を信じて、試してみてください!それはあなたには、いくつかのハックを作っしなければならない古いライブラリであるため、こと、Codeigniter's Native session(下部にあるダウンロードリンクがあります)

b.-しかし:

はa.-ここにあります。これらの単純なハックは、library's forum

cで確認できます。このファイルをcodeigniterのライブラリディレクトリにドロップするだけです。

+0

はい私はCodeigniterを使用しています! – Nyxynyx

+0

:)私はそれを知っていた!答えはミラノ・バブスコフが非常に独創的であるように見える。動作しない場合は、セッションベースのソリューションをお勧めします。私はここにいるでしょう... –

+0

私はCodeigniterがFacebookのCookieを削除する理由は困惑していますか?そして、Facebookが私のwebsisteのためにユーザーを認証した直後に、Facebookによって設定されたクッキーが作成されましたか?あるいは、PHP SDKがクッキーを設定しましたか? – Nyxynyx

関連する問題