用于发布到Facebook的JavaScript代码

时间:2014-07-31 18:57:57

标签: facebook-javascript-sdk

我正在编写一个简单的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);  
  }
});

});

1 个答案:

答案 0 :(得分:0)

大多数权限需要获得Facebook批准才能被用户使用。未经批准,它们仅适用于App Admins,其他用户只能在登录过程中获得基本权限。有关详细信息,请参阅更改日志和审核指南:

顺便说一句,请确保消息参数始终是100%用户生成的,否则您绝对无法通过publish_actions完成审核流程。