关于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>
是否可以在Facebook上分享链接时出现的对话框中设置一些预先输入的文字?
感谢。
答案 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
}
})();