1

Facebook API を使用していますが、おかしな動作をしています。2 つの問題があります。

  1. getLoginUrl(...) を使用すると、ポップアップが表示されません。何もクリックせず、リダイレクトするだけです。
  2. 私のFBアカウントを使用すると、このコードがリダイレクトされ、「ユーザー」と「トークン」が表示されますが、同僚のFBアカウントで同じことを試みると、「エラーが発生しました。後でもう一度やり直してください」というエラーが表示されます。

リダイレクタのコードは次のとおりです。

require_once '../../src/facebook.php';

define('FACEBOOK_APP_ID',"xxx");
define('FACEBOOK_SECRET',"xxxxx");
define('REDIRECT_URI',"http://dev.example.com.au/php/work/redirectSimple.php");

$facebook = new Facebook(array(
    'appId' => FACEBOOK_APP_ID,
    'secret' => FACEBOOK_SECRET,
    'cookie' => true
));

$user = $facebook->getUser();
if($user == 0) 
{
    $login_url = $facebook->getLoginUrl($params = array('redirect_uri' => REDIRECT_URI));
    echo ("<script> top.location.href='".$login_url."'</script>");
}
else
{
    echo ("<script> window.location.href='".REDIRECT_URI."'</script>");
}

そして私のリダイレクトされたコード ( redirectSimple.php ):

echo "\n WELCOME!";

require_once '../../src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => "xxx",
  'secret' => "xxxxx",
  'fileUpload' => true,
  'cookie' => true
));

$user = $facebook->getUser();
echo "\n user = ".$user;

$token = $facebook->getAccessToken();
echo "\n token = ".$token;

私はこれらのことを別のマシンでも試しましたが、同じ結果が得られました。ということは、アカウントかアプリの設定の問題でしょうか。

4

2 に答える 2

3

まず、Ajax を使用していない限り、PHP でポップアップを探しに行かないでください。PHP はサーバー側であるため、ポップアップを実行しません。ポップアップが必要な場合は、JavaScript SDK を使用する必要があります。

次に、ログインに成功すると、別のファイルにリダイレクトされます。個人的には、リダイレクトではなくrequire_onceを使用します。Facebookオブジェクトはすでに作成されており、リダイレクトする場合は再作成する必要があるためです。

これを「try」と「catch」と組み合わせると、Facebook のエラーをトラップして、何が起こっているかの手がかりを得ることができます。

それ以外は、他の方がおっしゃる通り、アプリの設定でサンドボックスモードになっていないか確認してください。

于 2012-12-12T07:33:02.840 に答える
1
  1. 「ポップアップ」を作成するためのコードはここにはありませんgetLoginUrl()。サーバー側フローの一部として使用できる URL を作成します。この URL にリダイレクトする必要があります。
  2. あなたの同僚はあなたのアプリの開発者でもテスターでもない可能性が高いため、アプリを見ることができません (おそらくサンドボックス モードになっています)。
于 2012-12-12T06:45:07.220 に答える