【发布时间】:2013-10-21 22:56:13
【问题描述】:
使用 php sdk,我检查标签内的用户是否喜欢相应的页面。
如果我将以下代码放入 index.php 并将该页面用作我的 page-tab-url,
<?php
require_once("facebook/facebook.php");
// Create our application instance
// (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => '1399475990283166',
'secret' => 'mysercret',
'cookie' => true
));
$signed_request = $facebook->getSignedRequest();
echo $signed_request['page']['liked'];
?>
它输出'1'。
我想改为异步实现,所以我将 php 放在一个单独的文件中,并尝试使用 ajax 来访问它
$http.post('/facebook/likes.php').
success(function(data){
console.log(data);
}).error(function(data){
console.log(data);
}
);
此示例使用 angular,但我使用的 javascript 库可能无关紧要。
当我使用 javascript 访问信息时,Facebook 似乎没有获得我喜欢该页面的信息。添加一个 print_r($facebook);在页面上,我正在检索与不在 facebook-tab 中相同的值:
(
[sharedSessionID:protected] =>
[appId:protected] => 1399475990283166
[appSecret:protected] => 679fb0ab947c2b98e818f9240bc793da
[user:protected] =>
[signedRequest:protected] =>
[state:protected] =>
[accessToken:protected] =>
[fileUploadSupport:protected] =>
[trustForwarded:protected] =>
)
我可以以某种方式异步访问这些值吗?
【问题讨论】:
-
“我想改为异步实现” – 为什么?在页面标签应用程序中“异步”执行此操作有什么好处?
-
页面标签应用程序包含一个表单。如果您喜欢该页面,则仅假设您能够提交表单。
-
所以你检查应用程序负载,服务器端,如果用户已经喜欢该页面 - 如果没有,你首先不要给他表单,而是一条消息,而不是他应该首先喜欢该页面。通过顶部的“赞”按钮赞页面将重新加载您的应用。这一次,你的check会发现他点赞了这个页面,你把表格给他,让他提交……这里根本不需要异步做任何事情。
标签: javascript facebook facebook-javascript-sdk