我正在尝试将单个变量传递给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 ) ) )
有什么想法吗?
答案 0 :(得分:0)
问题是对话框页面不使用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
));