不在标签页上时,getSignedRequest为null

时间:2012-02-13 16:59:43

标签: facebook translation

我需要访问用户的区域设置,然后才能请求他们的任何权限。这通常在getSignedRequest中可用,但是当我直接查看应用程序而不是在页面选项卡中时,它看起来是NULL。所以当我转到apps.facebook.com/myapp/时它是NULL,但是当我通过像www.facebook.com/pages/mypage/pageid?sk=appid这样的页面查看它时,它具有正确的值。这是一个错误还是预期的行为?当我无法通过页面访问应用程序时,是否必须使用其他方法?

2 个答案:

答案 0 :(得分:4)

根据我的记忆,在Facebook上,签名请求只会在您标签的第一页上提供 - 例如。的index.php。

从这里开始,您需要存储检索到的值,并根据需要从本地存储或会话中访问它们。

此外,如果您直接查看该应用程序,它将根本不可用。您必须通过Facebook查看此方法才能使用此方法。不幸的是,如果您希望在页面选项卡之外使用此信息,则必须先请求权限。

祝你好运!

答案 1 :(得分:1)

对签名请求使用$ _REQUEST [“signed_request”]而不是使用函数

$dd = parse_signed_request($_REQUEST["signed_request"]);

//解析函数 function parse_signed_request($ signed_request)     {         list($ encoded_sig,$ payload)= explode('。',$ signed_request,2);

    // decode the data
    $sig = base64_url_decode($encoded_sig);
    $data = json_decode(base64_url_decode($payload), true);

    return $data;
}

function base64_url_decode($input)
{
    return base64_decode(strtr($input, '-_', '+/'));
}