我需要开发一个在页面选项卡内运行的 facebook 应用程序。只有喜欢此页面的用户才能使用该应用程序(并因此对其进行授权)。
使用signed_request参数可以很容易地知道给定的 facebook 用户是否喜欢该页面:
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;
});
如您所见,如果应用程序授权成功,我会重新加载页面。
但是,当页面重新加载时,signed_request.page参数会丢失。因此,非粉丝的 html 标记出现了。
这是在授权应用程序后重新加载时 signed_request 的样子:
{
算法:'HMAC-SHA256',代码:'...',issued_at:1348003786,user_id:'100...'}
如果我在那之后直接刷新页面。一切都很好,页面信息又出现了:
{算法:'HMAC-SHA256',过期:1348009200,issued_at:1348004248,oauth_token:'AA..',页面:{ id:'490 ...',喜欢:true,admin:true},用户:{国家: 'ec', 语言环境: 'en_US', 年龄: { min: 21 } }, user_id: '100...' }
这是应该如何工作的吗?
解决此问题的推荐方法是什么?
谢谢!