【问题标题】:Page-Tab App_Data not contained in Facebook Signed RequestFacebook 签名请求中未包含 Page-Tab App_Data
【发布时间】:2013-07-01 15:48:20
【问题描述】:

我正在尝试将单个变量传递给 Facebook 页面应用程序。对话 url 如下所示:

$data = json_encode('{"pid":"'.$places_id.'"}');

https://www.facebook.com/dialog/pagetab?app_id=APP_ID&app_data=".$data."&next=REDIRECT_URI

应用安装正常,但签名请求参数只是不包含app_data字段。

在 Facebook 页面选项卡上,我使用 PHP 来检索签名的请求数据:

require 'facebook.php';
$app_id = "APP_ID";
$app_secret = "APP_SECRET";
$facebook = new Facebook(array(
    'appId' => $app_id,
    'secret' => $app_secret,
    'cookie' => true
));
$signed_request = $facebook->getSignedRequest();

当我在我的 Facebook 页面选项卡上打印签名请求数组时,我只得到以下内容

Array ( 
[algorithm] => HMAC-SHA256 
[issued_at] => 1372693029 
[page] => Array ( [id] => ID [liked] => [admin] => 1 ) 
[user] => Array ( [country] => de [locale] => en_US [age] => Array ( [min] => 21 ) ) )

有什么想法吗?

【问题讨论】:

    标签: php facebook facebook-php-sdk


    【解决方案1】:

    问题是对话框页面没有使用app_data参数。您需要使用地址中的参数和数据重定向回应用程序。因此,您需要将 REDIRECT_URI 更改为具有该自定义 GET 值的特定 Facebook 应用 URL。

    编辑

    来自 Facebook API 的 getLoginUrl() 方法有助于简化事情。请注意在返回 URI 中定义 app_data 数组的区域。

    $canvas = "http://www.facebook.com/{PAGE_NAME}/app_{APP_ID}";
    $url = $facebook->getLoginUrl(array(
        'canvas' => 1,
        'fbconnect' => 0,
        'display' => 'page',
        'req_perms' => '',
        'next' => $canvas."?app_data[]=share",
        'cancel_url' => $canvas
    ));
    

    【讨论】:

    • 谢谢,但这是不可能的,因为 REDIRECT_URI 必须归我的应用程序所有。如果我将 REDIRECT_URI 替换为 Facebook 选项卡 URL,该对话框将引发错误消息。
    • 尝试将应用设置中的站点 URL 设置为 http://www.facebook.com/{PAGE_NAME}/app_{APP_ID}。我将很快粘贴一个代码 sn-p 以作为对我有用的示例。
    • 那么,你找到答案了吗?我也有同样的问题。
    • 您需要附加get 变量?app_data[]=share 以在PHP API 中获取应用数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    相关资源
    最近更新 更多