我正在编写一个简单的JS程序来发布FB。
登录脚本如下所示:
indow.fbAsyncInit = function() {
FB.init({
appId: '1469527639#######',
version : 'v2.0',
xfbml : true,
status : true,
cookie : true
});
// fetch the status on load
FB.getLoginStatus(loginChecker);
};
(function(d, s, id){
var js;
var fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
function loginChecker(response){
if(response.status === "connected"){
console.log('This app is already authorized');
} else if(response.status === "not_authorized") {
console.log('This app is not authorized');
} else {
console.log('user is not logged into fb');
FB.login(function(){}, { scope: 'publish_actions', return_scopes: true});
}
}
上述脚本并不完全符合预期。它确实显示了Facebook登录框,但是在我输入凭据后,它不会要求获得在墙上发布的许可。
我有另一个功能,假设用户登录后会在用户的墙上发布消息。但由于上面的脚本没有要求这些权限,我无法发帖。
根据Facebook文档,我应该使用
来请求权限{ scope: 'publish_actions', return_scopes: true}
我已经这样做了。
在用户墙上发布的按钮很简单:
$('#postit')。bind('click',function(){ var messageToPost = document.getElementById(“messageArea”)。value;
FB.api('/me/feed','post',{message: messageToPost},function(response){
if(!response || response.error){
console.log('There was a issue in posting your emssage');
} else {
console.log(response.id);
}
});
});
答案 0 :(得分:0)
大多数权限需要获得Facebook批准才能被用户使用。未经批准,它们仅适用于App Admins,其他用户只能在登录过程中获得基本权限。有关详细信息,请参阅更改日志和审核指南:
顺便说一句,请确保消息参数始终是100%用户生成的,否则您绝对无法通过publish_actions
完成审核流程。