首页 > 解决方案 > API 共享计数 Facebook Graph 已弃用?

问题描述

从今天开始,当我尝试获取共享计数时,答案是:v2.9 及更高版本不推荐使用共享字段。

例如:https ://graph.facebook.com/?id=https://stackoverflow.com&fields=share

如果没有&fields=share,则会显示 json 内容,但没有 share 值。

我需要从 url 获取 Facebook 的分享数。

标签: facebookfacebook-graph-api

解决方案


API 确实发生了变化。

应该是这样的。

https://graph.facebook.com/?id=https://stackoverflow.com&fields=engagement&access_token=user-access-token

您需要一个访问令牌。如果您有 Facebook,请访问https://developers.facebook.com/并制作一个应用程序。

图形 API 资源管理器

然后单击“图形 API 资源管理器”。

获取令牌

和“获取令牌”(Get App Token)。而已。

如果您使用 JavaScript 进行计数,它将是这样的。

// split('#')[0] : Remove hash params from URL
const url = encodeURIComponent( window.location.href.split('#')[0] );

$.ajax( {
    url : '//graph.facebook.com/?id=' + url + '&fields=engagement&access_token=user-access-token',
    dataType : 'jsonp',
    timeout: 5000,
    success : function( obj ) {
        let count = 0;

        if ( typeof obj.engagement.reaction_count !== 'undefined' ) {
            count = obj.engagement.reaction_count;
        }
        // do something with 'count'
    },
    error : function() {
        // do something
    }
} );

还有其他计数类型,例如 comment_count 和 share_count。

请参阅https://developers.facebook.com/docs/graph-api/reference/v3.2/url

有没有办法在不发送访问令牌的情况下接收计数?

我想知道我自己哈哈


更新:

感谢安东卢金。

是的。我不应该显示访问令牌。它必须被隐藏。我觉得非常愚蠢。

所以现在快速的回答。这在没有令牌的情况下真的有效!

我的最终(我希望是最终的)答案是这样的。

// split('#')[0] : Remove hash params from URL
const url = encodeURIComponent( window.location.href.split('#')[0] );

$.ajax( {
    url: '//graph.facebook.com/?id=' + url + '&fields=og_object{engagement}',
    dataType : 'jsonp',
    timeout: 5000,
    success : function( obj ) {
        let count = 0;

        try {
            count = obj.og_object.engagement.count
        } catch (e) {
            console.log(e)
        }
        // do something with 'count'
    },
    error : function() {
        // do something
    }
} );

这里的一点是,当没有人共享目标页面时,甚至没有定义“og_object.engagement”。

我以为我会得到 0 作为返回值。但事实并非如此。

所以让我们使用try-catch。

现在我唯一关心的是 API 限制。如果您的网站获得大量综合浏览量,则此更新版本可能无法正常工作。


推荐阅读