我想发布到用户是管理员的Facebook页面。这是我的代码
FB.init({appId: "***********", status: true, cookie: true, frictionlessRequests: true});
var page = null;
function postToPage(page, msg){
FB.api('/'+page.id+'/feed', 'post', { message: msg, access_token: page.access_token },
function(res) { console.log(res) }
)
}
FB.login(function(response) {
if (response.authResponse) {
// user is logged in and granted some permissions.
FB.api('/me/accounts', function(response) {
console.log(response);
page = response.data[0];
postToPage(page, 'hello fb-page world');
})
} else {
// User cancelled login or did not fully authorize.
}
}, {scope:'read_stream,publish_stream,offline_access, manage_pages,status_update'});
它不起作用,当我看到控制台时,我有错误:
(#200) The user hasn't authorized the application to perform this action
我是否遗漏了scope
中的授权?
答案 0 :(得分:2)
试试这个
<body>
<div id='fb-root'></div>
<script src='http://connect.facebook.net/en_US/all.js'></script>
<p>
<a href="javascript:;" onclick='postToFeed(); return false;'>Post to Group</a>
</p>
<p id='msg'></p>
<script>
FB.init({appId: "Yourappid", status: true, cookie: true});
function postToFeed() {
// calling the API ...
FB.api('/Pageid/feed', 'post',
{
message : "It's awesome ...",
link : 'Link',
picture : 'Imageurl',
name : 'Featured of the Day',
to: 'Pageid',
from: 'Pageid',
description : 'Your description'
},
function(response) {
if (!response || response.error) {
alert(JSON.stringify(response.error));
} else {
alert('Post ID: ' + response.id);
}
});
}
</script>
</body>
另一种方式 主要的挑战是获得永久访问令牌,让我们代表页面管理员行动,其余的非常类似于制作常规的墙贴。获取访问令牌需要向页面管理员询问manage_pages额外权限,然后检索其“帐户”信息,这些信息将包含具有管理员权限的每个页面的access_token字段。
FB.login(function() {
FB.api('/me/accounts', 'get', {}, function(response) {
console.log(response);
});
}, {perms:'publish_stream,offline_access,manage_pages'});
在其他墙贴文件参数中传递刚检索到的访问令牌
//API init code is omitted
var wallPost = {
access_token: "<ACCESS_TOKEN>",
message: 'Hello, World!'
};
FB.api('/me/feed', 'post', wallPost, function(response) {
if (!response || response.error) {
alert('Error occurred');
} else {
alert('Success!');
}
});
关键是获得正确的访问令牌。您可以在浏览器中尝试使用firebug并测试您在此处获取的访问令牌https://developers.facebook.com/tools/debug/
答案 1 :(得分:1)
即使用户授予您的应用程序访问其公开个人资料的权限,但这并不意味着授予了所有必需的权限。
请参阅https://developers.facebook.com/docs/reference/javascript/FB.login/v2.0#permissions了解如何验证已授予哪些权限。