Php facebook,如何在登录时传递VAR?
我正在使用widget让我的用户创建帐户:Php facebook,如何在登录时传递VAR?,php,facebook,Php,Facebook,我正在使用widget让我的用户创建帐户: <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,loc
<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>
如何将这些变量传递到重定向uri
?我看到响应是json格式的,所以我应该设置一些变量从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
)
编辑:
要获取签名请求,我使用此脚本,并将我的重定向\u uri设置为我的画布页面
。
我已将注册表和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';
}
define('FACEBOOK_APP_ID','113869…637480');
定义('FACEBOOK_SECRET'、'0f60d2c………4f6f921c899');
函数parse_signed_请求($signed_请求,$secret){
列表($encoded_sig,$payload)=分解('.',$signed_请求,2);
//解码数据
$sig=base64\u url\u decode($encoded\u sig);
$data=json_decode(base64_url_decode($payload),true);
if(strtoupper($data['algorithm'])!=='HMAC-SHA256'){
错误日志('未知算法。应为HMAC-SHA256');
返回null;
}
//检查信号
$expected_sig=hash_hmac('sha256',$payload,$secret,$raw=true);
如果($sig!==$expected\u sig){
错误日志('错误的JSON签名!');
返回null;
}
返回$data;
}
函数base64\u url\u decode($input){
返回base64_解码(strtr($input,'-'','+/');
}
如果($\请求){
回显“已签名的请求内容:”;
$response=parse_-signed_请求($_-request['signed_-request'],
脸谱网(秘密),;
回声';
打印(回复);
回声';
}否则{
回显“$\请求为空”;
}
在获取JSON之前,您首先必须验证并解码已签名的请求-这是一个错误。您应该在重定向uri-更改中引用的脚本中执行此操作:
到执行验证的脚本的相应URL,该URL应与您的Facebook应用程序位于同一个域中
一旦在redirect_uri脚本中进行了验证和解码,您将拥有一个包含相关属性的关联数组(您将知道它是经过验证的注册数据)。从那里,您可以再次对这些数据进行json_编码,并将其发布到适当的表单(希望在您的隐私政策向用户明确说明您的应用程序将与之共享数据的位置)。感谢回复,请查看我编辑的帖子。问题是我没有得到我放在表单中的所有数据
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';
}
redirect_uri=http%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fecho%2F&