【问题标题】:getSignedRequest is null when not on a tab page不在标签页上时 getSignedRequest 为空
【发布时间】:2014-03-14 06:58:26
【问题描述】:

在向用户请求任何权限之前,我需要访问用户的语言环境。这通常在 getSignedRequest 中可用,但是当我直接查看应用程序而不是从页面选项卡中查看时,它似乎为 NULL。所以当我转到apps.facebook.com/myapp/ 时它是NULL,但是当我通过www.facebook.com/pages/mypage/pageid?sk=appid 之类的页面查看它时它具有正确的值。这是错误还是预期行为?当我不通过页面访问应用程序时,是否必须使用其他方法?

【问题讨论】:

    标签: facebook translation


    【解决方案1】:

    据我所知,在 Facebook 上,签名请求仅在您的标签页的第一页上可用 - 例如。 index.php。

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

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

    祝你好运!

    【讨论】:

    • +1 对此答案(尽管您可以在画布上启用 signed_request,但它在应用设置中)
    • 谢谢,是的,我更改了应用设置!
    • 感谢您的回答和 cmets。我在检索签名请求时遇到了问题,解决方案是指定完整的 URL(使用 index.php)。页面标签 URL:应该是 example.com/index.php 而不仅仅是 example.com
    【解决方案2】:

    使用 $_REQUEST["signed_request"] 进行签名请求,而不是使用函数

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

    // 解析函数 函数 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, '-_', '+/'));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-16
      • 2011-04-22
      • 1970-01-01
      相关资源
      最近更新 更多