向Facebook发送状态消息?

时间:2014-02-07 20:38:25

标签: html facebook facebook-graph-api share

关于Facebook的sharer.php有很多问题,但它们都已过时了。起初Facebook折旧了,但根据FB's dev documentation它现在又回来了。 (编辑:现在又要了......?)

您曾经可以像这样使用它:

http://www.facebook.com/sharer/sharer.php?u=<url to share>&t=<message text>

但是documentation现在只提到了这个:

https://www.facebook.com/sharer/sharer.php?u=<url to share>

enter image description here

是否可以在Facebook上分享链接时出现的对话框中设置一些预先输入的文字?

感谢。

2 个答案:

答案 0 :(得分:12)

“共享”对话框仅将URL作为参数共享,不再包含任何其他内容(标题,描述,图片......)。它从URL本身,嵌入到文档中的Open Graph元素中获取此数据,或者如果不存在,则从内容中“猜测”。

即使是“较旧”版本的“共享”对话框,也很长时间没有采用预先设置的消息参数 - 因为您不应该以任何方式预填充消息在分享内容时,无论分享实际发生的方式如何。 (“不应该”实际上意味着,平台政策显然禁止你这样做。)

您当然也可以通过API共享链接(然后称为“发布”链接) - 并且因为这在后台发生,所以消息是您在执行此操作时指定的参数。但是同样的规则适用 - 消息应该由用户自己预先创建,这实际上意味着他们应该在之前的某个地方输入它。即使在那里它也不应该预先填充,以便他们只需按下输入或单击按钮。

由于他们宣布了API v2.0,所有新应用都必须经过“登录审核”,然后才能要求任何高级权限(并发布链接需要一个) - 并预先填写在您的应用发布流程中的消息,您最终将无法获得批准。当然,您可以尝试“欺骗”它,并且仅在之后实现消息的预填充......但同样,这样做明显违反了平台策略,并且当您被发现时会阻止您的应用程序

如果您打算为具有相同或大致相似消息的多个用户执行此操作,您可以假设Facebook的算法很容易捕获。

答案 1 :(得分:2)

只有一条小评论 - 虽然无法像其他评论所说的那样编辑文本 - 如果您可以在客户端的计算机上安装浏览器扩展程序,则可以编辑该页面中发生的所有内容(你没有指定你的用例,所以我提到这个,以防万一你正在开发一些你能够在客户端机器级别影响的东西)。

例如,使用chrome扩展程序,您可以将脚本注入facebook.com域。在扩展名manifest.json中:

"content_scripts": [
        { 
          "matches": ["https://*.facebook.com/*",

然后这可能是你的contnet脚本,你可以通过连接到市场营销来解决文本问题。此示例发送分析(facebook sharer转换率)并更改一些文本(从&#34;分享&#34;到&#34;上传&#34;到facebook):

sharer = (function () {
    var _ref = qs('ref') ? qs('ref') : 'unknown';
    function qs(name) {
        name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
        return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
    }
    function isSharer() {
        return location.pathname === '/sharer/sharer.php';
    }
    function bindEvents() {
        $('button[name="share"]').click(function() {
            analytics.send('fb_sharer', 'share', _ref);
        });
        $('#u_0_0').click(function() {
            analytics.send('fb_sharer', 'cancel', _ref);
        });
    }
    function changeText() {
        console.log($('.fcw').length);
        $('.fcw').text('Upload to Facebook');
    }
    function load() {
        if (!isSharer()) return;
        changeText();
        analytics.send('fb_sharer', 'view', _ref);
        bindEvents();
    }
    return {
        load: load
    }
})();