Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向所有Facebook好友发送自定义消息_Facebook_Api_Posting - Fatal编程技术网

向所有Facebook好友发送自定义消息

向所有Facebook好友发送自定义消息,facebook,api,posting,Facebook,Api,Posting,像这样,我们今年再次制作了一个新年快乐视频,其中包含了我们所有Facebook和非Facebook朋友的名字 2010年,我们有一个定制的应用程序,用来在我们每个朋友的墙上发布一条定制的消息,如“亲爱的XXX,我祝你新年快乐,在这段视频中,你以1分24秒的速度出现。” 今年我们也希望这样做,也就是说,发布一条定制的消息,向我们的每个朋友显示特定的信息,但我们注意到Facebook在墙上和私人消息上的发布是有限制的 我们可能会使用GreaseMonkey/Javascript和Dialog AP

像这样,我们今年再次制作了一个新年快乐视频,其中包含了我们所有Facebook和非Facebook朋友的名字

2010年,我们有一个定制的应用程序,用来在我们每个朋友的墙上发布一条定制的消息,如“亲爱的XXX,我祝你新年快乐,在这段视频中,你以1分24秒的速度出现。”

今年我们也希望这样做,也就是说,发布一条定制的消息,向我们的每个朋友显示特定的信息,但我们注意到Facebook在墙上和私人消息上的发布是有限制的

我们可能会使用GreaseMonkey/Javascript和Dialog API脚本来使用我们的应用程序,但我们仍然担心会收到一些安全警告


那么这个项目可行吗?我们的朋友喜欢我们每年都在做的视频。

一个确认:尝试只通过直接线索(在发送了大约60条消息后)发送消息到Facebook服务器端的错误(错误500,甚至空白页)

实现这一目标的有效方法是

  • 尝试通过direct发送提要消息
  • 测试它是否可能或完成
  • 如果未成功(时间线被用户阻止),请通过发送一条普通消息
  • 在所有情况下,必须有一个指向对话框URL的
    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