起初我很抱歉发布旧帖子,但我不知道为什么我没有正确发布。
我将新的Feed发布到facebook粉丝专页作为管理员。我以前搜索了许多线程,并在他们评论时修复了。
但是我仍然在页面上发布内容而不是管理员。
这些是我的职能:
var page_id = [
'88290XXXXXX39694', //fan page 1
'17537XXXXXX02244', //fan page 2
];
var permission = 'publish_actions, publish_pages, manage_pages, user_events, publish_stream';
function postFB(id, title, desc) {
var title = title;
var desc = desc;
var body = title+"/n"+desc;
var video_link = 'https://youtu.be/'+id+'';
for(var i = 0; i<= page_id.length; i++ )
{
var accessToken = "";
FB.api('/'+page_id[i]+'?fields=access_token', function(response) {
accessToken = response.access_token;
});
FB.api('/'+page_id[i]+'/feed', 'post', {
message: body,
link: video_link,
access_token: accessToken
}, function(response) {
if (!response || response.error) {
console.log(response);
} else {
alert('Post ID: ' + response.id);
}
});
}
};
function publish(id, title, decs)
{
FB.login(function(response) {
if (response.authResponse) {
//Log auth permissions (in the response)
console.log(response);
FB.api('/me', function(response) {
console.log('Successful login for: ' + response.name);
// document.getElementById('status').innerHTML =
// 'Thanks for logging in, ' + response.name + '!';
});
postFB(id, title, decs);
} else {
console.log('User cancelled login or did not fully authorize.');
}
}, {
scope: permission,
return_scopes: true
});
};
&#13;
对我的问题有任何建议吗?
答案 0 :(得分:2)
FB.api
是异步的,你必须等待回调:
FB.api('/' + page_id[i] + '?fields=id,access_token', (response) => {
FB.api('/' + response.id + '/feed', 'post', {
message: body,
link: video_link,
access_token: response.access_token
}, (response) => {
if (!response || response.error) {
console.log(response);
} else {
console.log('Post ID: ' + response.id);
}
});
});
您需要的唯一权限是manage_pages
和publish_pages
。我也使用了箭头功能(因为ES6在这里)。
循环还有另一个大问题,你正在使用&#34; i&#34; API调用中的变量 - 因为回调是异步的,所以当它实际点击回调函数时它将不一样。你不应该在循环中大量发帖,确保它适用于一页。