为什么我在所有的facebook应用程序页面中都看不到signed_request?

时间:2011-09-12 07:16:05

标签: php facebook facebook-graph-api

我的脸书应用程序包含一些php页面 它第一页出现在画布网址中我可以从signed_request参数中获取用户数据,如下所示:

 $app_id = "1111111111111111";

 $canvas_page = "http://www.mydomain.com/fb/app/";

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


 $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 'welcome user';
      } 

但是当我在我的应用程序中导航到其他页面或iframe中的页面时,我看不到此参数。 所以它只是在画布中加载的第一页,Facebook发送此参数

1 个答案:

答案 0 :(得分:1)

正确。只有加载到iframe的第一页才会收到signed_request参数。您可以在那里解析它,然后将所需的任何数据传送到后续页面。