授权facebook标签应用程序
我需要开发一个运行在页面标签内的facebook应用程序。只有喜欢此页面的用户才能使用该应用程序(并因此授权) 使用signed_request参数,很容易知道某个facebook用户是否喜欢该页面:授权facebook标签应用程序,facebook,node.js,express,facebook-javascript-sdk,Facebook,Node.js,Express,Facebook Javascript Sdk,我需要开发一个运行在页面标签内的facebook应用程序。只有喜欢此页面的用户才能使用该应用程序(并因此授权) 使用signed_request参数,很容易知道某个facebook用户是否喜欢该页面: var isFan = false; if (req.facebook.signedRequest && req.facebook.signedRequest.page){ isFan = req.facebook.signedRequest.page.liked; }
var isFan = false;
if (req.facebook.signedRequest && req.facebook.signedRequest.page){
isFan = req.facebook.signedRequest.page.liked;
}
这很好用。
现在,一旦用户喜欢该页面,我将显示一个“启动此应用”按钮,该按钮将对其进行授权:
$('#authApp').click(function(){
FB.login(function(response) {
if (response.authResponse) {
window.location = window.location;
}
}, {scope: 'user_likes,user_photos'});
return false;
});
如您所见,如果应用程序成功授权,我将重新加载页面
但是,当页面重新加载时,已签名的请求.page参数丢失。因此,非粉丝的html标记出现了
这是授权应用程序后重新加载时签名的_请求的样子:
{
算法:“HMAC-SHA256”,代码:
'...',
发布地址:1348003786,用户id:'100…'
如果我在那之后直接刷新页面。一切正常,页面信息再次出现:
{算法:“HMAC-SHA256”,过期时间:1348009200,发布时间:
1348004248,oauth_标记:“AA..”,页面:{id:'490…',喜欢:
true,admin:true},用户:{country:'ec',locale:'en_US',年龄:{
min:21},用户_id:'100…'}
这是怎么回事
建议的解决方法是什么
谢谢
但是,当页面重新加载时,signed_request.page参数丢失
当然是这样,因为它只在初始加载到iframe时传递给你的应用程序(通过一个带有method=post提交到iframe的表单)
如果要在重新加载页面后获取其中包含的数据,有两个选项:
- 将它放入您自己的会话中,以便您可以随时从那里访问它
- 不要只是在iframe中重新加载你的应用程序,而是重新加载整个Facebook页面(JavaScript,top.location)。然后,您的应用程序将再次加载到iframe中,并将再次发布已签名的_请求