带有API的Facebook发送对话框错误代码:100('链接'无效)

时间:2013-08-02 11:11:39

标签: facebook

我希望通过我们的应用程序(Exvo)向用户提供汇款给Facebook好友的能力,方法是通过Facebook向邀请页面发送URL。

我正在使用“发送”Facebook对话框(重定向到Facebook网站)。我正在重定向用户的确切网址是(to字段已被编辑):

https://www.facebook.com/dialog/send?app_id=637466739616439&description=You+can+create+an+Exvo+Account+to+accept+this+money+transfer.&display=page&link=https%3A%2F%2Fwww.exvo.com%2Finvitations%2F9fb77bda665f0ae8f58843daec80a29b&name=Pawe%C5%82+Go%C5%9Bcicki+would+like+to+send+you+0.01+EUR&picture=https%3A%2F%2Fthemes.exvo.com%2Fstylesheets%2Fimages%2Fcustom_images%2Flogo.png&redirect_uri=https%3A%2F%2Fwww.exvo.com&to=username

这给我提供了一个Facebook'发送'对话框。当我输入自定义消息并按“发送”时,我出现此错误:

API Error Code: 100
API Error Description: Invalid parameter
Error Message: 'link' is invalid.

链接参数(从上面的URL中提取并解码)是:

https://www.exvo.com/invitations/9fb77bda665f0ae8f58843daec80a29b

这是一个有效的网址,返回正确的200响应。使用Facebook调试器,我可以看到提供的URL不会产生任何错误:

https://developers.facebook.com/tools/debug/og/object?q=https%3A%2F%2Fwww.exvo.com%2Finvitations%2F9fb77bda665f0ae8f58843daec80a29b

只有关于推断属性的警告(我已经在某一点添加了这些属性,但它没有帮助)。

另请注意,偶尔(如10中的1),当我点击“发送”时,消息会通过,我看不到任何错误,这使得它更奇怪。

为什么会发生这种错误?我做错了什么?

5 个答案:

答案 0 :(得分:8)

这可能不是您的问题,但仅限于可发现性:确保您共享的URL在Internet上公开可用(即不在防火墙内或本地计算机上)。 FB需要访问您的网址以验证其真实性。

答案 1 :(得分:3)

就像mpcabd上面指出的那样,请确保在网址中删除fb,fbdev,facebook中的任何内容,因为当我这样做时,它解决了我的问题。这可能是Facebook的一个错误或安全措施。您总是需要通过链接传递redirect_uri并尝试提及标题。

此外,您的链接和redirect_uri必须位于您为该应用提供的域中。例如:如果应用设置中的应用域名为http://stackexchange.com,则您无法共享说https://stackoverflow.com/apps/php/fbsdk/etc/login.php之类的链接,而是必须共享对我有用的链接http://stackexchange.com/apps/php/etc/login.php

echo "<a href='https://www.facebook.com/dialog/send?app_id=YOUR_APP_ID&name=Thanks&link=".$linkToShare."&redirect_uri=".$linkToRedirectTo."'/>Send</a>";

您还可以将$title分配给某些内容。

答案 2 :(得分:2)

我想出了一些奇怪的东西,今天在我管理的网站上发生了同样的事情,问题似乎是链接中包含了facebook这个词,所以尝试删除 [facebook,fb,或f if if这是一个完整的单词] 来自你的网址,它应该有效,我有一个像open/ID/facebook/这样的网址,当我把它改成fopen/ID/看起来很愚蠢的时候,这是唯一有效的方式!

所以可能在你的情况下这是问题所在: https://www.exvo.com/invitations/9 fb 77bda665f0ae8f58843daec80a29b

尝试将您的网址更改为没有fb或facebook或类似内容的内容。

答案 3 :(得分:0)

我只使用发送对话框来解决此问题。我在公共URL上使用动态查询字符串参数。 Facebook已经删除了常见的URL,但如果Facebook之前没有删除那个确切的URL,那么常见URL 的每次迭代都会导致此错误。

我通过强迫Facebook在之前抓取网址来解决问题我试图通过FB UI发送对话框发送它。使用FB API点击graph.facebook.com,其中id参数中发布的网址和scrape参数设置为true

像这样:

FB.api('https://graph.facebook.com/', 'post', {
    id: '[URL]',
    scrape: true
}, function(response) {
    FB.ui({
        method: 'send',
        name: '[name]',
        picture: '[Picture URL]',
        link: '[URL]',
        description: '[description]'
    });
});

我也回答了这个问题的解决方案here

答案 4 :(得分:0)

为我做了以下修复:

  • 较短的tokenlink param:9fb77bda665f0ae8f58843daec80a29b中的此字符串,长度为32个字符,现在为16,符合gkimsal
  • 的建议
  • 接受October 2013 breaking changes,要求我在页面中引入OpenGraph标记并删除构建“发送”对话框重定向时我所包含的namedescriptionpicture_uri参数URI

现在,Facebook在向用户显示“发送”对话框之前,必须事先获取我的页面以检索显示数据所需的数据(来自OG:titledescriptionimage)适当的用户对话。我认为这对我来说是最有帮助的。