我正在开发一个自定义应用程序,以自动发布到我的企业Facebook页面。 我创建了一个新的应用程序配置文件,并获得了API密钥和密钥,并知道如何使用图形API自动发布到我的Facebook页面。
我的代码:
FB.init({ appId: "My FB API ID", status: true, cookie: true, frictionlessRequests: true });
FB.login(function (response) {
if (response.authResponse) {
var acc_token = response.authResponse.accessToken;
FB.api('/me/accounts', 'GET', '', function (response) {
console.log(response);
if (!response || response.error) {
alert(JSON.stringify(response.error));
}
else {
if (response.data.length > 0) { //-- Check for page list
acc_token = response.data[0].access_token; //== Change Accesstoken If a page is exist
}
var data = {
name: "Automatically Feed Posting",
link: "www,example,com",
access_token: acc_token,
description: "Hello, it's for testing"
}
FB.api('me/feed', 'post', data, function (response) {
if (!response || response.error) {
alert(JSON.stringify(response.error));
}
else {
alert("Your Feed Successfully Posted");
}
});
}
});
}
}, { scope: 'email,user_likes,publish_actions,publish_stream,read_stream,manage_pages,rsvp_event' });
问题是:如果用户有多个页面,并请求'/me/accounts'
,我会获得所有页面的列表。在这里,我想首先询问用户要用于自动发布的页面。
(在当前的高级/上述代码中,我获取页面列表的第一个索引并使用它进行发布)。
已更新:
做了一些谷歌搜索...我发现很多帖子,他们都建议手动保存/询问用户page's Id
(在发帖之前)并在获取所有页面列表时使用此页面ID并进行比较pageId with list并执行进一步的操作。
例如:
var Userpage_id = "1234567890";
FB.init({ appId: "My FB API ID", status: true, cookie: true, frictionlessRequests: true });
FB.login(function (response) {
if (response.authResponse) {
var acc_token = response.authResponse.accessToken;
FB.api('/me/accounts', 'GET', '', function (response) {
console.log(response);
if (!response || response.error) {
alert(JSON.stringify(response.error));
}
else {
if (response.data.length > 0) { //-- Check If page list
for(var i=0; i<response.data.length; i++ ) {
if(response.data[i].page_id == Userpage_id) {
acc_token = response.data[0].access_token; //== Change Accesstoken If a page is exist
}
}
}
var data = {
name: "Automatically Feed Posting",
link: "www,example,com",
access_token: acc_token,
description: "Hello, it's for testing"
}
FB.api('me/feed', 'post', data, function (response) {
if (!response || response.error) {
alert(JSON.stringify(response.error));
}
else {
alert("Your Feed Successfully Posted");
}
});
}
});
}
}, { scope: 'email,user_likes,publish_actions,publish_stream,read_stream,manage_pages,rsvp_event' });
但我不喜欢这样做,有什么方法可以向用户显示所有页面列表(不要手动放置pageid)和选择页面执行发布后?
更新
我在API文档中找到了一些"enable_profile_selector"选项。
enable_profile_selector: prompt the user to grant permission for one or more Pages.
帮助我实现目标是否有帮助?
任何帮助都会很明显...... !!!
答案 0 :(得分:0)
简单地说,您可以列出要让用户选择的页面,然后使用place
哈希中的data
字段。另一方面,您想要显示FB对话框吗?