异步获取脸书选项卡中的用户数据
Asynchronously get user data in facebook tab?
使用 php sdk,我检查选项卡内的用户是否喜欢相应的页面。
如果我将以下代码放在索引中.php并将该页面用作我的页面标签网址,
<?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选项卡中一样:
(
[sharedSessionID:protected] =>
[appId:protected] => 1399475990283166
[appSecret:protected] => 679fb0ab947c2b98e818f9240bc793da
[user:protected] =>
[signedRequest:protected] =>
[state:protected] =>
[accessToken:protected] =>
[fileUploadSupport:protected] =>
[trustForwarded:protected] =>
)
我可以以某种方式异步访问这些值吗?
可以访问signed_request
令牌时,您才会作为Facebook应用程序登录。此令牌与初始请求一起发送(作为 POST 参数),但不在任何 cookie 中。
使用实际代码最简单的方法是在您发出的每个 ajax 请求时重新发送此签名请求参数,以便服务器和 Facebook SDK 可以访问该信息。
但只是为了检查用户是否喜欢当前页面。我建议您直接在页面上打印数据,以便从一开始就可用。伪示例:
<script>
window.data = {};
window.data.page_liked = <?= encode_json((boolean)$signed_request['page']['liked']) ?>;
</script>
要了解用户在启动页面时是否喜欢该页面,您可以在Facebook事件中放置一个听众:
FB.Event.subscribe("edge.create", function( response ) {`
if ( response.match(/* RegExp matching your FB page url */) ) {
// user liked!
}
});
response
是喜欢的URL,因此您只需将其与您的页面URL(facebook.com/MyPage
)进行比较,然后您就知道用户是否单击了应用程序中的"喜欢"按钮。
附带说明一下,通常请求用户信息最干净的方法是登录用户(OAuth),并将请求直接从JS传递到Open Graph(无论如何你都使用Angular,所以你的应用程序必须已经是基于前端的)。您的服务器不应用作 Open Graph 和应用之间的中间步骤,您将复制代码而没有优势。
这不适用于 page.liked
属性,因为它是在应用加载时随signed_request
一起发送的页面属性(不是用户属性)。
- 从远程脚本获取用户IP
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- d3基于用户选择动态更新节点
- 同步调用,直到用户通过angular验证为访问者
- 使用javascript搜索具有用户输入的数组
- 如何使用jquery确定用户是否年满18岁
- Meteor-添加用户自定义字段的方法不起作用
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- 跟踪用户点击Adsense广告的IP地址
- 使用javascript反复检查用户在facebook上的登录状态
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 如何检查用户在html5视频播放器中观看了完整的视频
- 一个密码测试程序,如果存在空格,它会提醒用户
- 如何使用JavaScript中的用户输入创建序列/序列
- 当用户按下回车键时,自动在text区域/text中插入消息
- 显示某个用户ID的某个标签的30张Instagram图片
- 将当前用户的 ID 推送到 meteorjs 中集合/文档的内部数组
- 获取我的网站的用户的登录状态,并使用 php 查看具有该名称表单数据库的用户数
- 正在比较用户数组字符串以列出空用户
- 我怎样才能使MEAN.js默认的文章用户保存到用户数组中