facebook应用程序链接到问题
问题描述:
我正在尝试为Facebook准备应用程序。应用软件被创建。 “localhost”测试没有任何问题,但Facebook应用程序中的链接无法正常工作... “page.php?page = test” ...应用程序,使用粉丝页面。第一页打开,用户ID和PageID数据是无缝的,但我点击链接到示例,数据是空白的。我试图目标=“_顶”但是不行......facebook应用程序链接到问题
require 'facebook.php';
$facebook = new Facebook(array(
'appId' => 'xxx',
'secret' => 'xxx',
'cookie' => false,
));
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
$m2_facebook_kullanici_id = $data['user_id'];
$m2_facebook_sayfa_id = $data['page']['id'];
if(empty($_GET['sayfa'])){
...working here USERID and PAGEID...
}
if($_GET['sayfa'] == 'guncelle'){
...does not work here USERID and PAGEID...
}
我不知道什么是错的? 谢谢...
基本解决:
<?php
require 'facebook.php';
$signed_request = $_REQUEST["signed_request"];
$facebook = new Facebook(array(
'appId' => 'xxx',
'secret' => 'xxx',
'cookie' => false,
));
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
$m2_facebook_kullanici_id = $data['user_id'];
$m2_facebook_sayfa_id = $data['page']['id'];
setcookie("facebook_user_id", $m2_facebook_kullanici_id);
setcookie("facebook_page_id", $m2_facebook_sayfa_id);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
</head>
<body>
<?php
if(empty($_GET['sayfa'])){
echo '<a href="index.php?sayfa=guncelle">Güncelle</a><br />';
echo '<h3>Home Page</h3>';
echo '<strong>User ID:</strong> ' . $m2_facebook_kullanici_id . '<br />';
echo '<strong>Page ID:</strong> ' . $m2_facebook_sayfa_id;
}
if($_GET['sayfa'] == 'guncelle'){
$m2_facebook_kullanici_id = $_COOKIE["facebook_user_id"];
$m2_facebook_sayfa_id = $_COOKIE["facebook_page_id"];
echo '<a href="index.php">Back</a><br />';
echo '<h3>Settings Page</h3>';
echo '<strong>User ID:</strong> ' . $m2_facebook_kullanici_id . '<br />';
echo '<strong>Page ID:</strong> ' . $m2_facebook_sayfa_id;
}
?>
</body>
</html>
答
SOLUTION:
只是将下面的代码添加到链接的末尾
?signed_request=' . $_REQUEST['signed_request'] . '
或
&signed_request=' . $_REQUEST['signed_request'] . '
的应用程序的一个简单的例子
<?php
require 'facebook.php';
function parse_signed_request($signed_request, $secret) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
error_log('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
error_log('Bad Signed JSON signature!');
return null;
}
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
$data = parse_signed_request($_REQUEST['signed_request'], 'a5aaf146542d50c11f55e001c0fb8f31');
$m2_facebook_kullanici_id = $data['user_id'];
$m2_facebook_sayfa_id = $data['page']['id'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
</head>
<body>
<?php
if(empty($_GET['sayfa'])){
echo '<a href="app_fan_page.php?sayfa=guncelle&signed_request='.$_REQUEST['signed_request'].'">Settings</a><br />';
echo '<h3>Home</h3>';
echo '<strong>User ID:</strong> ' . $m2_facebook_kullanici_id . '<br />';
echo '<strong>Page ID:</strong> ' . $m2_facebook_sayfa_id;
}
if($_GET['sayfa'] == 'guncelle'){
echo '<a href="app_fan_page.php?signed_request=' . $_REQUEST['signed_request'] . '">Home</a><br />';
echo '<h3>Settings</h3>';
echo '<strong>User ID:</strong> ' . $m2_facebook_kullanici_id . '<br />';
echo '<strong>Page ID:</strong> ' . $m2_facebook_sayfa_id;
}
?>
</body>
</html>
特别感谢:moguzalp和梅苏特Eyrice