使用来自客户端的fb api发布到Facebook页面

时间:2016-06-05 14:11:41

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

我正在尝试发布到用户页面。这是我到底有多远,我从FB.getLoginStatus获取userId和userToken,然后使用此代码发布到我的Feed。现在我想发布到一个页面,但我一直让你没有权限发布到页面。

mjvfiurl

2 个答案:

答案 0 :(得分:2)

你正在混淆一些事情。需要使用FB.login来询问权限,而不是在使用API​​时:

FB.login(function(response) {
    if (response.authResponse) {
        //user is logged in
    }
}, {scope: 'publish_actions', return_scopes: true});

授权后,您可以使用API​​:

FB.api('/me/feed', 'post', {
        message: 'This is my message',
        link: 'http://trello.com',
        name: 'This is my message',
        description: 'This is my message'
    }, function(data) {
        console.log(data);
    });
});

更多信息:http://www.devils-heaven.com/facebook-javascript-sdk-login/

这是用户个人资料。发布到网页(作为网页)需要manage_pagespublish_pages权限:

FB.login(function(response) {
    if (response.authResponse) {
        //user is logged in
    }
}, {scope: 'manage_pages,publish_pages', return_scopes: true});

在授权后,您必须通过此API调用获取页面的页面令牌:/{page-id}?fields=access_token

FB.api('/' + pageId + '', {fields: 'access_token'}, function(response) {
    console.log(response);
});

之后,您可以使用响应中的令牌发布为Page。

FB.api('/' + pageId + '/feed', 'post', {message: 'some message', access_token: pageToken}, function(response) {
    console.log(response);
});

旁注:不允许预先填写邮件和自动提交(在登录后立即),请确保在创建任何应用之前阅读平台政策:https://developers.facebook.com/policy/

答案 1 :(得分:1)

您使用的是错误的端点,您必须使用'/ pageid / feed'。获得用户ID和令牌后,您需要通过点击'/ me / accounts'获取他有权访问的所有页面。现在,您从此处获取要发布的页面的pageid,然后点击“/ pageid / feed”发布。 这是一些代码:

FB.login(function(responses1) {
                        FB.api('/me/accounts', 'get',function(data) {
                        //you will get a list here.......//for now i am hardcoding it to the first page
                            var page_access_token = data.data[0].access_token;
                            var pageId = data.data[0].id;
                            //now post to the page
                            var target = '/'+pageId+'/feed'

                            FB.api(target,
                                'post',
                                { message: "message",
                                    link: "link",
                                    picture: "",
                                    caption: "",
                                    description: "",
                                    name: "",
                                    access_token: page_access_token
                                }
                                ,function(response) {
                                    if (!response || response.error) {
                                        console.log("in error");
                                       console.log(response.error);
                                    } else {
                                        console.log(response);
                                    }
                                });
                                    });
                    }, { scope: "manage_pages,publish_pages" });

您还需要将范围更改为:

manage_pages,publish_pages