我使用this小部件让我的用户创建帐户:
<iframe src="http://www.facebook.com/plugins/registration.php?
client_id=113869198637480&
redirect_uri=http%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fecho%2F&
fields=name,birthday,gender,location,email"
scrolling="auto"
frameborder="no"
style="border:none"
allowTransparency="true"
width="100%"
height="310px">
</iframe>
但是,如果我点击submit
按钮,我想将信息发送到以下链接:
http://www.xxx.com/Index.php?url=/leads/form&client_code=" Facebook"&name="XXX"&phone="XXXX"&email="test@XXX.com"
如何将这些变量传递给redirect_uri
?我看到响应来自json,所以我应该设置一些vars从json响应中获取信息然后将它们传递给url?
任何想法都有帮助, 感谢
修改。 由于某种原因,我得到的回复并不完整: 我看不到电子邮件,性别等
Array
(
[algorithm] => HMAC-SHA256
[expires] => 1313038800
[issued_at] => 1313033344
[oauth_token] => 103750869718158|2.AQAx-VOlqYgoM6yr.3600......
[user] => Array
(
[country] => us
[locale] => en_US
[age] => Array
(
[min] => 21
)
)
[user_id] => 100002389272431
)
编辑:
获取sign_request我使用此脚本并将redirect_uri
设置为我的Canvas Page
。
我已将注册表和php放在同一个文件中。
问题是我没有得到我在表格中放置的所有数据
define('FACEBOOK_APP_ID', '113869....637480');
define('FACEBOOK_SECRET', '0f60d2c.........4f6f921c899');
function parse_signed_request($signed_request, $secret) {
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);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
error_log('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
// check sig
$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, '-_', '+/'));
}
if ($_REQUEST) {
echo '<p>signed_request contents:</p>';
$response = parse_signed_request($_REQUEST['signed_request'],
FACEBOOK_SECRET);
echo '<pre>';
print_r($response);
echo '</pre>';
} else {
echo '$_REQUEST is empty';
}
答案 0 :(得分:0)
首先,您需要在获取JSON之前验证并解码已签名的请求 - example PHP for this here。您应该执行此操作的位置在redirect_uri中引用的脚本中 - 更改:
redirect_uri=http%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fecho%2F&
到执行验证的脚本的相应网址,该网址应与您的Facebook应用在同一个域中。
在redirect_uri脚本中验证并解码后,您将拥有一个包含相关属性的关联数组(并且您将知道它是经过验证的注册数据)。从那里,您可以再次对此数据进行json_encode并将其发布到相应的表单(希望您的隐私政策非常明确地向用户表明您的应用将与之共享数据)。