0

私はこの単純なコードを持っています:

// index.php
require_once("/fb/facebook.php");
require_once("/config/config.php");

$facebook = new Facebook(array(
    'appId'  => $config['appId'],
    'secret' => $config['secret'],
    'cookie' => true
));

$user = $facebook->getUser();

if ($user === 0) {      

    $loginUrl = $facebook->getLoginUrl(array(
      'redirect_uri' => 'https://www.example.com/join.php'      
    ));

    echo("<script> top.location.href='" . $loginUrl . "'</script>");    
    exit;

}
else {      
    var_dump($facebook->api("/me"));    
}   

そして、join.phpコードは次のとおりです。

//join.php
require_once("/fb/facebook.php");
require_once("/config/config.php");

$facebook = new Facebook(array(
    'appId'  => $config['appId'],
    'secret' => $config['secret'],
    'cookie' => true
));

if (isset($_REQUEST['error'])) {    
    echo("<script>top.location.href='". $config['errors']['auth'] . "'</script>");
    exit;
}

echo("<script>top.location.href='". $config['url'] . "'</script>");

問題は、http://apps.facebook.com/myappsampleにアクセスすると(そしてFacebookにログオンしていない場合)、アプリケーションは認証ダイアログを(正しく)表示しますが、このステップの後、インデックスから無限ループを実行します.phpからjoin.phpへ。

join.phpにエラーがあるかどうかを確認するとわかるように、index.php(アプリケーションのホームページ)にリダイレクトしますが、index.phpではまだ取得$user === 0しているため、join.phpに別の時間をリダイレクトします。 .... etcなど(無限ループ)。

この種の問題をどのように修正できますか?

どうもありがとうございます!

編集:ログインページのコールバック(redirect_uri)としてjoin.php を使用します。このページの目的は、ユーザーに関する情報をデータベース内に保存することです。そのため、join.phpがそれを実行し、index.phpにリダイレクトして、ユーザーがアプリケーションを使用できるようにします。間違い?

4

1 に答える 1

0

$facebook->getUser()コールバック データを実際に処理して でアクセス トークンを見つけるには、を呼び出す必要がありますjoin.php

于 2012-05-13T06:41:20.513 に答える