0

私は PHP 開発者で、Facebook PHP SDK の経験は豊富ですが、今回は迷ってしまいました :(

私の問題は次のとおりです。PHPフレームワークであるLaravelを使用してFacebookページタブアプリケーションを開発しています。これは私のコードです:

    //getting the Facebook class instance
    $facebook = IoC::resolve('facebook-sdk');

    if(!$facebook->getUser()){
        $pagetab_url = 'https://www.facebook.com/PAGEUSERNAME?sk=app_APPID';    

        $loginUrlParams = array(
               'scope' => 'publish_stream',
               'redirect_uri' => $pagetab_url
        );

        $loginUrl = $facebook->getLoginUrl($loginUrlParams);

        echo("<script> top.location.href='" . $loginUrl . "'</script>");
    }
    else{
        echo $facebook->getUser();
    }

$facebook->getUser() は常にゼロを返すため、このコードは無限ループを生成します。AppId と AppSecret は正しいです。実際、'redirect_uri' をアプリ ドメインの任意のページに変更すると機能します (例: 'redirect_uri' => ' https://www.mysite.com/fb_callback ')。

追加の詳細: 署名されたリクエストは常に null です。何か考えはありますか?

どうもありがとう!

編集 これは私の問題を解決 しましたFacebook iframeタブの署名付きリクエストは常に空です

4

1 に答える 1

0

ページをリロードするスクリプトを挿入するのではなく、ユーザーにアプリにログインして承認する機会を与える必要があると思います。

何か不足していますか?(ユーザーがログインしていてアプリを承認していない限り、 $facebook->getUser() 呼び出しから結果を得ることはありません)。

最後に、使用しない理由はありますか。

header('Location: '.$loginUrl) ?

JavaScriptを注入する代わりに?

複数のサーバーで開発していますか? (おそらく Localhost とテスト サーバー?) 別の可能性として、2 つの異なるドメイン (たとえば、localhost と stage.whatever.com) でテストしており、両方のドメインで動作する権限をアプリに与える必要があります。

基本的に、エラーがあれば getUser() 呼び出しからログに記録し、その出力を確認します。

于 2013-01-02T23:06:31.433 に答える