2012-04-05 10 views
2

私は、次のコードを持っている:FacebookのPHP SDK 3.1.1無限ループ

$facebook = new Facebook(array('appId' => $FB_APP_ID, 
          'secret' => $FB_APP_KEY, 
          'cookie' => true)); 
$fb_sess = $facebook->getUser(); 

if (empty($fb_sess)) { 

    $url = $facebook->getLoginUrl(array('response_type'=>'token', 
             'scope' => 'email')); 
    header("Location: $url"); 

} 

$me = $facebook->api('/me'); 
... 

を問題が$ fb_sessは($ fb_sess)ので、空、常に0であるということであることは常に真である、などへのリダイレクトログインURLは無限に繰り返されます。私のアプリは正しく設定されているようだ。私は最新のPHP SDKを使っている。それを修正するか、少なくとも何が起こっているのかを知る手がかりはありますか?

答えて

0

redirect_uri paramがありません。

$params = array(
'scope' => 'email', 
    'response_type'=>'token', 
'redirect_uri' => 'http url after login', 
); 

だから、これが唯一のユーザーがページに返され、ログイン後に確認するREDIRECT_URIます。

+0

ここにあなたの$ urlを投稿できますか? – Madan

+0

https://www.facebook.com/dialog/oauth?client_id=397110206974921&redirect_uri=http%3A%2F%2Fwww.mywebsite.tld%2Ffbtest.php%3Fstate=044eb4138538b7518dcbdef336c986b3&scope=email –

+0

この回答は正しくありません。 'redirect_uri'はオプションで、定義されていない場合は、元々メソッドを実行したページにデフォルト設定されます。 https://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/ –

0

私はこの質問が古いことを認識していますが、誰かがGoogleから(私が行ったように)ここに来る場合にそれに答えるでしょう。

まず第一に、この行コメントアウト:あなたはありますかどうかを確認する機会を持っている。この方法を

echo "the user appears to be empty try to <a href=".$url.">login</a>";

header("Location: $url");

をし、このようなものに置き換えますユーザーは無限のリダイレクトループで失われることはありません。ほとんどの場合、エラーメッセージがURLに追加されます、それはこのようなものを見てみましょう:この例では

error_code=901&error_message=This+app+is+in+sandbox+mode.++Edit+the+app+configuration+at+http%3A%2F%2Fdevelopers.facebook.com%2Fapps+to+make+the+app+publicly+visible

問題をアプリがサンドボックスモードであるです。