【问题标题】:Implementing feed of Facebook page in the website在网站中实现 Facebook 页面的提要
【发布时间】:2014-07-17 20:25:47
【问题描述】:

我必须在主页中实现 Facebook 提要(我们在 Facebook 中的网站页面)。

我尝试使用此插件 (https://developers.facebook.com/docs/plugins/like-box-for-pages),但无法更改显示样式。例如,我不想在提要中显示徽标、页面标题和图像。

Graph API + JSON + jQuery 似乎是在添加网站之前获取和自定义 Facebook 提要的方法。附上如何显示提要的图片。

我浏览了 Facebook 的 API 页面。但是,如果有人已经这样做了,我需要一些指导。

我正在使用以下内容获取提要。

  $(document).ready(function () {                      
        $.ajax({
            url: 'https://graph.facebook.com/1234/feed?access_token=cxcx&callback=?', //Replace with your own access token
            dataType: 'json',
            success: displayFacebookFeed,
            error:alertError
        });
    });

它工作正常,但我正在访问的消息有链接,它以文本形式出现。

 var html="";
        $.each(result.data, function (i, item) {

            var body = item.message;
            if (!body) {
                body =  item.description;
            }
            html += "<li>" + body + "</li>";

        });

举个例子。

9 Sensational Traits of Highly Promotable Employees | Inc.com https://www.inc.com/jeff-haden/9-sensational-traits-of-highly-promotable-employees.html

在上面的提要中,我希望 this 作为链接,但它以纯文本形式出现。

有什么建议吗?

【问题讨论】:

  • 为什么要考虑使用 Javascript SDK 和 API...
  • 我正在使用下面的来获取提要
  • 这是事实,Facebook 状态只是文本,只是它们有一个处理器,它们在显示之前运行通过将链接更改为 HTML 和任何开放图形标准,stackoverflow.com/questions/507436/… 作为您使用的 javascript,您可以只需使用stackoverflow.com/questions/37684/…

标签: facebook-graph-api


【解决方案1】:

使用 Activity Feed 插件为您的域提供 Activity Feed 怎么样?

https://developers.facebook.com/docs/plugins/activity

【讨论】:

    【解决方案2】:

    这是我不久前为一个项目提出的解决方案。绝对不是即插即用,因为它与我的 javascript 架构集成,但希望可以帮助您入门:

    "use strict";
    var Facebook = function(sb, options) {
        options = options || {};
        var language = options.language || "en_US";
        var self = this;
    
        var access_token = encodeURIComponent(YOUR ACCESS TOKEN);
    
        var listenerQueue = [];
        var loading = false;
        var FACEBOOK;
        var appId = YOUR APP ID;
    
        if (window.FB) {
            FACEBOOK = window.FB;
        }
    
        (function _load() {
            if (!loading) {
                loading = true;
    
                window.fbAsyncInit = function() {
                    // init the FB JS SDK
                    FACEBOOK = window.FB;
                    FACEBOOK.init({
                        appId      : appId,
                        status     : true,
                        oauth      : true,
                        cookie     : true,
                        xfbml      : true
                    });
    
                    sb.publish("facebook:initialized");
                };
    
                // Load the SDK asynchronously
                (function(d, s, id){
                    var js, fjs = d.getElementsByTagName(s)[0];
                    if (d.getElementById(id)) {return;}
                    js = d.createElement(s); js.id = id;
                    js.src = "//connect.facebook.net/" + language + "/all.js";
                    fjs.parentNode.insertBefore(js, fjs);
                }(document, 'script', 'facebook-jssdk'));
            }
        })();
    
        (function() {
            sb.subscribe('facebook:initialized', function() {
                listenForLogin();
                if (listenerQueue.length) {
                    clearListenerQueue();
                }
            });
        })();
    
        function listenForLogin() {
            FACEBOOK.Event.subscribe('auth.authResponseChange', function(response) {
                if (response.status === 'connected') {
                    getLoggedInUserData();
                } else {
                }
            });
        }
    
        function getLoggedInUserData() {
            FACEBOOK.api('/me', function(response) {
                sb.publish('facebook:loggedIn', response);
            });
        }
    
        function clearListenerQueue() {
            if (FACEBOOK) {
                for (var i=0; i<listenerQueue.length; i++) {
                    listenerQueue[i].fn.apply(this, listenerQueue[i].args);
                }
    
                listenerQueue = [];
            }
        }
    
        function sharePage(url, options) {
            var opts = options || {};
    
            if (FACEBOOK) {
                FACEBOOK.ui(
                    {
                        method: 'feed',
                        name: opts.name || '',
                        caption: opts.caption || '',
                        description: opts.description || '',
                        link: url,
                        picture: opts.picture || ''
                    },
                    function(response) {
                        var success = (response && response.post_id);
    
                        sb.publish('facebook:shared', {response : response, success : success});
                    }
                );
            } else {
                listenerQueue.push({fn : sharePage, args : [url, options]});
            }
    
            return self;
        }
    
        function getPosts(fbHandleOrId, options) {
            options = options || {};
            if (FACEBOOK) {
                var limit = options.limit || '10';
                var graphPOSTS = '/' + fbHandleOrId +'/posts/?date_format=U&access_token=' + access_token + "&limit=" + limit;
                FACEBOOK.api(graphPOSTS, function(response) {
                    sb.publish('facebook:gotPosts', {response : response, handleUsed : fbHandleOrId});
                });
            }  else {
                listenerQueue.push({fn : getPosts, args : [fbHandleOrId, options]});
            }
        }
    
        function getStatuses(fbHandleOrId, options) {
            options = options || {};
    
            if (FACEBOOK) {
                var limit = options.limit || '10';
                var graphStatuses = '/' + fbHandleOrId + "/feed/?access_token=" + access_token + "&limit=" + limit;
                FACEBOOK.api(graphStatuses, function(response) {
                    sb.publish('facebook:gotStatuses', {response : response, handleUsed: fbHandleOrId});
                });
            } else {
                listenerQueue.push({fn : getStatuses, args : [fbHandleOrId, options]});
            }
        }
    
        function getNextPageOfPosts(nextPostsUrl, options) {
            options = options || {};
    
            if (FACEBOOK) {
                FACEBOOK.api(nextPostsUrl, function(response) {
                    sb.publish('facebook:gotNextPosts', {response : response, handleUsed : fbHandleOrId});
                });
            } else {
                listenerQueue.push({fn : getNextPageOfPosts, args : [nextPostsUrl, options]});
            }
        }
    
        function getPublicUserInfo(fbHandleOrId, options) {
            options = options || {};
    
            var graphUSER  = '/'+ fbHandleOrId +'/?fields=name,picture&callback=?';
    
            if (FACEBOOK) {
                FACEBOOK.api(graphUSER, function(response) {
                    var returnObj = {response : response, handleUsed : fbHandleOrId};
                    sb.publish('facebook:gotPublicUserInfo', returnObj);
                });
            } else {
                listenerQueue.push({fn : getPublicUserInfo, args : [fbHandleOrId, options]});
            }
        }
    
        function getLikes(pageHandle, options) {
            options = options   || {};
    
            var graphLIKES = '/' + pageHandle + '/?fields=likes';
    
            if (FACEBOOK) {
                FACEBOOK.api(graphLIKES, function(response) {
                    var returnObj = {response : response, handleUsed: pageHandle};
    
                    sb.publish('facebook:gotLikes', returnObj);
                });
            } else {
                listenerQueue.push({fn : getLikes, args : [pageHandle, options]});
            }
        }
    
        function login() {
            if (FACEBOOK) {
    
                FACEBOOK.getLoginStatus(function(response) {
                    if (response.status !== "connected") {
                        // not logged in
                        FACEBOOK.login(function() {}, {scope : 'email'});
                    } else {
                        getLoggedInUserData();
                    }
                });
            } else {
                listenerQueue.push({fn : login, args : []});
            }
    
        }
    
        function getNextPageOfPosts(callback) {
            callback = callback || function() {};
    
    
        }
    
        return {
            getLikes : getLikes,
            getPublicUserInfo : getPublicUserInfo,
            getCurrentUser : getLoggedInUserData,
            getNextPageOfPosts : getNextPageOfPosts,
            getPosts : getPosts,
            getStatuses : getStatuses,
            sharePage : sharePage,
            login : login
        }
    };
    

    【讨论】:

      【解决方案3】:

      Facebook 现在刚刚添加;

      注意:随着 Graph API v2.3 的发布,Activity Feed 插件已被弃用,并将于 2015 年 6 月 23 日停止工作。 活动提要显示您网站上最近发生的最有趣的活动,使用您的朋友和其他人的操作(例如点赞)。 https://developers.facebook.com/docs/plugins/activity

      【讨论】:

        【解决方案4】:

        您可以使用 FB Javascript SDK

        如果我没记错的话,如果用户已经为您的网站设置了 facebook 权限,这应该可以工作。或者你不会要求他们进行基本身份验证

        FB.login(function(){
            FB.api('/v2.0/page_group_address_or_id/feed', 'GET', '', function(feedContent){
                // handle rendering the feed in what ever design you like
                console.log(feedContent);
            }); 
        });
        

        唯一的其他方法是使用服务器端获取 oAuth 访问权限并使用您自己的访问令牌,尽管 php 向 GraphAPI 服务器发出请求

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-18
          • 2012-02-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多