向所有Facebook好友发送自定义消息
像这样,我们今年再次制作了一个新年快乐视频,其中包含了我们所有Facebook和非Facebook朋友的名字 2010年,我们有一个定制的应用程序,用来在我们每个朋友的墙上发布一条定制的消息,如“亲爱的XXX,我祝你新年快乐,在这段视频中,你以1分24秒的速度出现。” 今年我们也希望这样做,也就是说,发布一条定制的消息,向我们的每个朋友显示特定的信息,但我们注意到Facebook在墙上和私人消息上的发布是有限制的 我们可能会使用GreaseMonkey/Javascript和Dialog API脚本来使用我们的应用程序,但我们仍然担心会收到一些安全警告向所有Facebook好友发送自定义消息,facebook,api,posting,Facebook,Api,Posting,像这样,我们今年再次制作了一个新年快乐视频,其中包含了我们所有Facebook和非Facebook朋友的名字 2010年,我们有一个定制的应用程序,用来在我们每个朋友的墙上发布一条定制的消息,如“亲爱的XXX,我祝你新年快乐,在这段视频中,你以1分24秒的速度出现。” 今年我们也希望这样做,也就是说,发布一条定制的消息,向我们的每个朋友显示特定的信息,但我们注意到Facebook在墙上和私人消息上的发布是有限制的 我们可能会使用GreaseMonkey/Javascript和Dialog AP
那么这个项目可行吗?我们的朋友喜欢我们每年都在做的视频。一个确认:尝试只通过直接线索(在发送了大约60条消息后)发送消息到Facebook服务器端的错误(错误500,甚至空白页) 实现这一目标的有效方法是
redirect_uri
参数,该参数必须指向应用程序拥有的URL。因此,app_id
也是强制性的
这样,您就不会发送太多的“正常”消息,因为没有太多的人挡住他们的墙,因此您的邮件也不会被阻挡
下面是GreaseMonkey/TamperMonkey代码示例:
/==UserScript==
//@name-NameOfYourScript
//@namespace NamespaceOfYourScript
//@version-version-fyourscript
//@description输入一些有用的内容
//@match https://*/*
//@copyright 2012+,你
//@需要https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
//@grant GM_getValue
//@grant GM_setValue
//@grant GM_openInTab
//==/UserScript==
var baseapppage=“”;
var baseapppagehost=“apps.facebook.com”;var baseapppagepath=“”;
//调用baseapppage+“?StartBScript=0”以启动脚本
//0是要开始的索引
var-appid=“”;
var titleofvideo=“”;
var\u id=[
//把要联系的人的名单放在这里
{“id”:“”:“”},
//...
];
var video_url=“”;
var message=“”+
“\n\n视频链接:”+
“\n”+视频\u url+
"";
//“feed”或“send”(请注意,“send”只会阻止您…)
var default_mode=“feed”;
//如果降低此值,速度会更快,但可能会导致错误
var临时化=5*1000;
//更新消息中的占位符
函数更新消息(o){
var-str=消息;
用于(o中的var p){
str=str.replace(新的RegExp(“,“ig”),o[p])
}
返回str;
}
var自动=真;
//http://stackoverflow.com/questions/2090551/parse-query-string-in-javascript
函数getQueryVariable(变量){
var query=document.location.search.substring(1);
var vars=query.split('&');
对于(变量i=0;i=0?”&“:”;
返回baseurl+分隔符+datastr;
}
//提要页的参数
变量feed_参数={
“应用程序id”:应用程序id,
“名称”:视频标题,
“链接”:视频链接,
“redirect_uri”:createURL(baseapppage,{“currentfbscript”:“1”}),
//“”:“”,//标题、说明。。。
};
//发送页面的参数
var send_参数={
“应用程序id”:应用程序id,
“名称”:视频标题,
“链接”:视频链接,
“redirect_uri”:createURL(baseapppage,{“currentfbscript”:“1”}),
//"":"",
};
//函数以“feed”或“send”模式打开直接对话API,指向某个facebook id
功能重新定位到(模式,到){
变量参数=模式==“提要”?提要参数:发送参数;
var baseurl=mode==“提要”?“https://www.facebook.com/dialog/feed" : "https://www.facebook.com/dialog/send";
参数['to']=to;
var new_url=createURL(baseurl,参数);
如果(parseInt(“+GM_getValue”(“indice”,-1))%20==0){
//注意:由于Chrome内存“泄漏”,在其他选项卡中假装重新加载。
//关闭已完成的标记以保持低内存。
log(“运行‘假重新加载’…”);
函数fake_reload(){
console.log(“…现在”);
GM_openInTab(新的url,{active:false,insert:true});
//几毫秒后关闭当前窗口,以允许insert magic检测此“选项卡位置”
//请注意,不幸的是,它不起作用
window.setTimeout(window.close,1);
}
设置超时(假加载,3000);
}否则{
document.location=新的url;
}
}
//墙贴页
if(document.location.host==“www.facebook.com”&&document.location.pathname==“/dialog/feed”){
GM_设定值(“模式”、“馈送”);
var indice=parseInt(“+GM_getValue”(“indice”、-1));
if(indice<0 | | indice>=facebook_id.length)返回;
if(jQuery(“输入[名称=发布]”).length){
var mes=更新消息(facebook_id[indice]);
setTimeout(函数(){
jQuery(“textarea#feedform_user_message”).html(mes).val(mes);
if(自动)jQuery(“输入[名称=发布]”)。单击();
}(临时化);
}否则{
//无法发送墙消息->发送对话框
重新定位到(“发送”,getQueryVariable(“到”);
}
}
//发送邮件页面
如果(document.location.host==“www.facebook.com”&&document.location.pathname==”/dialog/se