Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Facebook注册插件中添加隐藏字段?_Php_Facebook - Fatal编程技术网

Php 如何在Facebook注册插件中添加隐藏字段?

Php 如何在Facebook注册插件中添加隐藏字段?,php,facebook,Php,Facebook,我正在使用facebook注册将一些数据发送到post.php文件: <?php $fields = json_encode(array( array('name' => 'first_name'), array('name' => 'last_name'), array('name' => 'phone', 'description' => 'Phone Number', 'type' => 'text') )); ?> <iframe

我正在使用facebook注册将一些数据发送到post.php文件:

<?php
$fields = json_encode(array(
array('name' => 'first_name'),
array('name' => 'last_name'),
    array('name' => 'phone', 'description' => 'Phone Number', 'type' => 'text')
));

?>
<iframe class="facebook-login" src="http://www.facebook.com/plugins/registration.php?
         client_id=xxxxxxxxxxxxxxxx&
         redirect_uri=http://www.xxx.com/poet.php&
         fields=<?php echo urlencode($fields);?>"
    scrolling="auto"
    frameborder="no"
    style="border:none"
    allowTransparency="true"
    width="100%"
    height="330">
</iframe>
但这不会返回123456值

有什么想法吗

谢谢

编辑:

如果facebook不允许隐藏字段,如何将变量传递给http://www.xxx.com/poet.php..

我是这样解读信息的:

$response = parse_signed_request($_REQUEST['signed_request'], FACEBOOK_SECRET);
$fname = $response['registration']['first_name'];

facebook为什么会允许隐藏字段?表单中的数据来源于Facebook或用户输入。如果要在下一个脚本中保留一个值,请使用变量。

Facebook注册允许隐藏字段:

支持的值包括文本、日期、选择、复选框、提前键入和隐藏


有关详细信息,请参见自定义字段部分。

是的,facebook似乎不支持传递隐藏变量,但您应该能够通过向重定向uri添加?hidden=value来模拟这些变量。

您需要设置默认属性


{'name'=>'language','description'=>'language','type'=>'hidden','default'=>I18n.locale}

哈达德先生非常接近。。。。正确的语法是:

$fields = "[{'name':'name'}, 
{'name':'email'},
{'name':'City','description':'City','type':'text'},
{'name':'State','description':'State','type':'text'},
{'name':'ZipCode','description':'Zip Code','type':'text'},
{'name':'Telephone','description':'Your Best Telephone Number','type':'text'},
{'name':'thisUserID','description':'thisUserID','type':'hidden','default':'".$user_id."'}
]";

要捕获FB用户信息。。。。使用签名请求中返回的FB id,并向FB open graph发出另一个请求。

如果生成的表单中确实存在隐藏字段,请检查登录页面的源代码。可能是,出于安全原因,facebook不允许隐藏字段。facebook隐藏字段用于从facebook获取数据,而不在表单上显示数据-它不用于预填充和传递数据。例如,如果你想收集生日而不显示它,我会说,facebook可以允许隐藏字段,原因与普通html表单支持它们的原因相同——在许多情况下,它们比会话变量更方便……这个答案是不正确的。Facebook确实允许隐藏变量。文件中非常明确地说明了这一点。传递值实际上有三种方法:1。定义一个类型为hidden的字段,并将其值设为2。手动为会话cookie指定一个值需要XFBML 3。通过请求uri手动传递变量
$fields = "[{'name':'name'}, 
{'name':'email'},
{'name':'City','description':'City','type':'text'},
{'name':'State','description':'State','type':'text'},
{'name':'ZipCode','description':'Zip Code','type':'text'},
{'name':'Telephone','description':'Your Best Telephone Number','type':'text'},
{'name':'thisUserID','description':'thisUserID','type':'hidden','default':'".$user_id."'}
]";