我有一个小脚本,可以在用户通过Facebook登录并在墙上发布一些信息时解锁页面上的某些内容。
如果用户第二次访问该页面并重复该过程,我希望避免任何重复的帖子(垃圾邮件)。
有没有一种方法(在询问权限时)告诉他们是否已经给出,因此跳过了脚本的共享部分?
这是我的代码:
$('.preview a').click(function(e) {
e.preventDefault();
FB.login(function(response) {
if (response.session) {
FB.api('/me/feed', 'post', {
message: 'Just unlocked the exclusive preview of...',
picture: 'http://website.com/share.png',
link: 'http://www.website.com',
name: 'Name goes here',
description: 'Description here'
},
function(response) {
if (!response || response.error) {
alert(response.error);
} else {
$('.preview').hide();
$('.clip').show();
}
});
}
},
{perms:'read_stream,publish_stream'});
});
答案 0 :(得分:0)
我写了一篇关于这个here的教程,这是一个例子:
FB.api({ method: 'fql.query', query: 'SELECT read_stream,offline_access,publish_stream FROM permissions WHERE uid=me()' }, function(resp) {
for(var key in resp[0]) {
if(resp[0][key] === "1")
console.log(key+' is granted')
else
console.log(key+' is not granted')
}
});
本文中还有一个JS REST示例仅供参考。
答案 1 :(得分:0)
从2011年到2014年,很多事情发生了变化..
我做了这个解决方案来检查“user_friends”和“publish_actions”权限,如果不允许这两者,则强制用户“重新进行autenticate”。只有在给出所有权限时才会调用回调方法。
function login(cb,forceAuth) {
FB.getLoginStatus(function (response) {
if (response.status !== 'connected' || forceAuth==true){
FB.login(function (response) {
checkPermissions(cb,false);
}, {scope: 'publish_actions,user_friends'});
} else {
checkPermissions(cb);
}
});
}
function checkPermissions(cb,forceAuth){
FB.api(
"/me/permissions",
function (response) {
if (response.data[0]['publish_actions']==undefined || response.data[0]['publish_actions']==0 ||
response.data[0]['user_friends']==undefined || response.data[0]['user_friends']==0) {
if (forceAuth!=false)
login(cb,true);
} else {
cb();
}
}
);
}
使用方法:
login(function () {
myLogedAndAllowedFunction();
});