2011-09-23 57 views
0

可能重复:
Why do I get an undefined index for signed_request in my facebook app?Facebook的画布教程是否遗漏了一些东西?

我张贴的问题上经常所以这是非常相似,但随后发现了Facebook左右。

如果我复制并从facebook canvas tutorial page粘贴此代码:

<?php 

    $app_id = "YOUR_APP_ID"; 

    $canvas_page = "YOUR_CANVAS_PAGE_URL"; 

    $auth_url = "http://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 ("Welcome User: " . $data["user_id"]); 
    } 
?> 

我怎么都不能得到signed_request如果$ auth_url从不叫什么名字?或者,也许我不明白PHP。它创建$ auth_url,但永远不会获得它,所以$ signed_request永远不会被填充。我究竟做错了什么?

编辑:这是因为我很笨,并通过apps.facebook.com没有访问它,而不是去http://mydomain.com ...

+0

FB.so与SO相同。尝试添加/删除Facebook。从url开始。 – bkaid

+0

我不知道如何关闭我自己的问题... – johnny

回答

0

关键位是在这里:

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

这就产生如果用户会话为空,则指示浏览器加载auth_url的脚本元素。

0

你确定你的浏览器没有阻止那个“top.location.href”的javascript调用吗?尝试echo/writel $ auth_url进一步检查。如果您可以向我们显示它正在重新调整的“$ auth_url”,那将会/可能有所帮助:)

0

'$ auth_url'仅用于在用户未向应用程序授予权限时重定向用户。

'$ signed_request'是Facebook发送的加密数据,变量'$ data'包含所有解密为关联数组的数据。

您不需要关心'$ signed_request',您真正需要的是'$ data'变量,它包含您可能需要的用户信息。

相关问题