facebook发送API错误代码:100 API错误说明:无效参数错误消息:"链接"无效

Pri*_*pta 10 facebook send

我使用Facebook发布GRAPH UI发布私人消息,链接到我在facebook的应用程序.之前它工作正常,但从最近两天开始,对话框开始抛出错误:

发生错误.请稍后再试.

API错误代码:100
API错误说明:无效参数
错误消息:"链接"无效.

发送消息我正在使用代码:

function sendMessage(id) {
  FB.ui({
    method : 'send',
    name : 'My APP',
    link : 'https://apps.facebook.com/MY_APP/',
    to : id,
    show_error : 'true',
    description : 'my description'
  });
}
Run Code Online (Sandbox Code Playgroud)

我已经用Google搜索了这一点,我得到的唯一相关信息是Facebook阻止了自己域名的链接以避免垃圾邮件.因为我改变了其他实时网站的链接工作.

我需要发送链接到我的应用程序,因为我必须提供这样的功能.

Zac*_*bey 6

我有过类似的问题,并且认为我会在这里分享调查结果.

Facebook文档中描述link参数的唯一信息并不十分有用:

link - 消息中发送的URL.

还有一些与此相似/相关的StackOverflow问题:

Facebook API错误100 - 链接无效

这个问题最终成了一个错误的picture参数

Facebook FB.ui发送对话框间歇性地返回无效链接错误 -

"问题围绕着我们的网址是动态的,每次都需要强制缓存.我现在打电话给" https://developers.facebook.com/tools/debug/og/object "进行刷新,然后启动发送对话."

我仍然不知道正是什么构成一个有效link参数,但...

从上述问题和答案中做出一些推论,以及我的一些测试,有效link参数:

  • 必须"完全合格".IE包含http://https://
  • 一定不能facebook.com链接
  • 可能不喜欢重定向(或者你必须与他们偷偷摸摸)
  • 难道不支持URL中的"应用程序域"列表
  • 不要支持查询字符串
  • 关于动态生成的页面可能很挑剔(如本问题所示)

显然,Facebook有某种链接爬行机制,可以对link参数执行一些未知测试以确定其有效性.我只希望他们选择为我们记录.


Ish*_*pta 3

找到了解决办法:

\n

Facebook 发送对话框错误代码:100 API 错误描述:参数无效错误消息:\xe2\x80\x98link\xe2\x80\x99 无效。

\n
\n

问题原因:

\n

Facebook 不允许使用自己的链接来阻止垃圾邮件。

\n

问题方案:

\n

Facebook API 没有提供任何解决方案。

\n

其他锻炼:

\n

缩短 URL,但 \xe2\x80\x99 不会在 Facebook 检查提供的 URL 时起作用。\n重定向 URL,与上面相同。\n在我的例子中,我部署了一个额外的 HTML 页面,仅用于重定向到 Facebook 应用程序链接。\只需记住,当 Facebook 扫描提供的 URL 时,您应该有一个几秒钟的计时器,这样它就无法检测到该页面正在重定向到同一应用程序链接。\n我在 HTML 文件中使用了以下代码:

\n
<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">\n<title>My Application</title>\n</head>\n<body>\n    <p id="demo"></p>\n</body>\n<script type="text/javascript">\n    var url = "https://apps.facebook.com/MY_APPLICATION_ID";\n    var myVar = setInterval(function() {\n        myTimer()\n    }, 1000);\n    var counter = 3;\n    function myTimer() {\n        if (counter == 0) {\n            window.location.replace(url);\n            window.clearInterval(myVar);\n        }\n        document.getElementById("demo").innerHTML = "you will be redirected in "\n                + counter + " seconds...";\n        counter = counter - 1;\n    }\n</script>\n</html>\n
Run Code Online (Sandbox Code Playgroud)\n