Facebook Graph API:询问用户哪个页面用于Feed发布?

时间:2014-01-17 06:15:12

标签: facebook facebook-graph-api facebook-javascript-sdk

我正在开发一个自定义应用程序,以自动发布到我的企业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.

帮助我实现目标是否有帮助?

任何帮助都会很明显...... !!!

1 个答案:

答案 0 :(得分:0)

简单地说,您可以列出要让用户选择的页面,然后使用place哈希中的data字段。另一方面,您想要显示FB对话框吗?