Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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
Javascript 如何在Facebook画布应用程序中调用FB.ui?_Javascript_Facebook_Canvas_Sdk_Payment - Fatal编程技术网

Javascript 如何在Facebook画布应用程序中调用FB.ui?

Javascript 如何在Facebook画布应用程序中调用FB.ui?,javascript,facebook,canvas,sdk,payment,Javascript,Facebook,Canvas,Sdk,Payment,我想创建一个Facebook登录的网站,通过简单的支付,用户可以购买虚拟商品 据我所知,Facebook支付系统(弹出窗口等)只适用于画布应用程序或手机。因此,我设置了我的应用程序名称空间和画布页面url,以便app.facebook.com/####包含我想要的页面 要检查用户是否已登录并已授予应用程序的基本权限,我有: <?php $app_id = "###"; $canvas_page = "http://apps.facebook.com/###"; $auth_u

我想创建一个Facebook登录的网站,通过简单的支付,用户可以购买虚拟商品

据我所知,Facebook支付系统(弹出窗口等)只适用于画布应用程序或手机。因此,我设置了我的应用程序名称空间和画布页面url,以便app.facebook.com/####包含我想要的页面

要检查用户是否已登录并已授予应用程序的基本权限,我有:

<?php 

 $app_id = "###";

 $canvas_page = "http://apps.facebook.com/###";

 $auth_url = "https://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($canvas_page);

 $signed_request = $_REQUEST["signed_request"];

 list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

 $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

 if (empty($data["user_id"])) {
        echo("<script> top.location.href='" . $auth_url . "'</script>");
 }
 else {
    echo $data["user_id"];
 }

?>

仅仅因为您使用的是PHP SDK并不意味着您不应该使用javascript SDK,因为事实上,它们是为一起使用而构建的,通过客户端和服务器端创建更好的连接

我使用javascript SDK来处理用户状态(已登录、应用程序是否已授权等),处理用户与facebook插件的对话和交互以及它们各自的响应,并处理用户操作引发的事件


在服务器端,我使用PHP SDK查询facebook或检索有关用户的信息,我也总是在服务器端验证用户。

当然,在使用JS SDK的任何方法之前,您需要初始化JS SDK。在PHP生成的页面中使用JS有什么问题吗?只是想确认一下,这是否意味着我仍然需要使用JS SDK检查登录和权限,即使我在画布中,PHP会提示用户登录和权限?这本身并不是问题——我认为非功能性可能来自于“重复”检查。是的,你会这样做:“出于某种原因,在画布中似乎会阻止标准JS SDK工作。”——不,绝对不会。如果您已经在服务器端脚本中指示用户登录,则不必再次使用JSSDK执行登录流程
FB.getLoginStatus
帮助您确定是否有有效的用户会话(需要时)。