如何验证Facebook应用程序以使用JavaScript API访问公共页面提要?

时间:2013-04-18 14:43:54

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

我正在尝试使用Facebook API访问公共Facebook页面的帖子但我似乎无法通过所有正确的凭据进行身份验证。 FB.api返回:

{"error":{"type":"http","message":"unknown error"}}

并且“访问令牌1:第1行”中记录了错误

Uncaught ReferenceError: TRJg376YTvXfk6sMur4Mggh5YnU is not defined access_token:1

(匿名函数)

这是我正在使用的代码:

<script src="http://connect.facebook.net/en_US/all.js"></script>
<div id="fb-root"></div>
<button name="my_full_name" onclick="connectToFacebook()" value="My Name" />

<script>
function connectToFacebook() {

    FB.api('https://graph.facebook.com/oauth/access_token',
    'get',
    {client_id:'xxxxxxxxxx', client_secret:'xxxxxxxxxx',grant_type:'client_credentials'}, //client_credentials
        function(response) {
            alert(JSON.stringify(response));
        });

        FB.api("/publicpage/feed",
                function (response) {
                    console.log(response);
                });

    }
</script>

在他们的网站上没有很好的记录!任何想法?

1 个答案:

答案 0 :(得分:-1)

是的,文档令人困惑,但你错了,都错了。请按照此article进行Facebook Javascript SDK的基本设置。

在该文章中,它一直在使用用户访问令牌,但是当您想要访问网页的公开信息时,您可以使用应用访问令牌。应用访问令牌的好处是它永不过期。这是你最终的选择。

使用当前登录用户的访问令牌获取公开信息

function getPosts() {           

       FB.api('/thepcwizardblog/feed', { limit: 10 }, function (response) {
            for (var i = 0, l = response.data.length; i < l; i++) {
                var post = response.data[i];
                var userid = post.from.id;

                var msg;

                if (post.message) {                        
                    msg = post.message;                        
                }
                else {                
                    msg = post.description;                        
               }

               console.log(userid + msg);
            }
        });
}

使用应用访问令牌

获取公开信息
function getPosts() {           

       FB.api('/thepcwizardblog/feed?access_token='+accessToken+'', { limit: 10 }, function (response) {
            for (var i = 0, l = response.data.length; i < l; i++) {
                var post = response.data[i];
                var userid = post.from.id;

                var msg;

                if (post.message) {                        
                    msg = post.message;                        
                }
                else {                
                    msg = post.description;                        
               }

               console.log(userid + msg);
            }
        });
}

您可以从here获取应用的访问令牌。

<强> [编辑]

请勿在评论中使用CBroe建议的应用访问令牌。