0

アプリケーションのタブを追加した Facebook ページがあります。次のコードを使用して、ユーザーが認証されているかどうかを確認するために使用します:-

<?php
     $app_id = "MY APP ID";

     $canvas_page = "MY CANVAS PAGE";

     $auth_url = "https://www.facebook.com/dialog/oauth?client_id=" 
            . $app_id . "&redirect_uri=" . urlencode($canvas_page);

     $signed_request = $_REQUEST["signed_request"];

     list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

     $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

     if (empty($data["user_id"])) {
            echo("<script> top.location.href='" . $auth_url . "'</script>");
     } else {
            echo("<script> location.href='index.php'</script>");
     } 
?>

アプリケーションで変更したCANVAS PAGEのと同じである必要があります。ログインした後、ページは にリダイレクトされますが、Facebook ページのタブにリダイレクトする必要があります。これに - https://www.facebook.com/myfbpage/app_82136128736123CANVAS PAGEhttps://apps.facebook.com/myappname/

4

1 に答える 1

2

あなたは正しいです。redirect_uri は、アプリケーションが「所有」する URL でなければなりません。つまり、アプリケーション設定にリストされています。

キャンバス ページでは、JavaScript リダイレクトを使用する必要があります (使用しているものと同様)。唯一の違いは、アプリケーションが iframe 内で実行されていることを覚えておく必要があることです。ドキュメントではなく、 topの location プロパティを変更する必要があります。Top はページの一番上のフレームを参照し、それがアプリケーションが適切なリダイレクトを実行する唯一の方法です。

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

それは醜く、多くの人はこれが正しい方法であると信じることを拒否していますが、私はまだ別の方法を見つけていません.

于 2012-08-15T17:20:26.113 に答える