5

我想通过 Facebook 向邀请页面发送 URL,让用户能够通过我们的应用程序 (Exvo) 向他们的 Facebook 朋友汇款。

我正在使用“发送”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%C​​5%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=用户名

这向我展示了一个 Facebook 的“发送”对话框。当我键入自定义消息并按“发送”时,出现此错误:

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

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

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

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

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

只有关于推断属性的警告(我也曾在某一时刻添加过这些警告,但没有帮助)。

另请注意,有时(如十分之一),当我单击“发送”时,消息通过并且我没有看到任何错误,这使得它更加奇怪。

为什么会发生此错误?我究竟做错了什么?

4

5 回答 5

8

在您的情况下,这可能不是问题,而只是为了便于发现:确保您共享的 URL 在 Internet 上是公开的(即不在您的防火墙内或在本地计算机上)。FB 需要访问您的 URL 以验证其真实性。

于 2013-12-15T22:06:58.040 回答
3

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

此外,您的链接和 redirect_uri 必须在您为应用程序提供的域内。例如:如果您的应用程序设置中的应用程序域是http://stackexchange.com,则不能共享链接,例如https://stackoverflow.com/apps/php/fbsdk/etc/login.php,而是必须共享对我有用的链接https://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给某些东西。

于 2015-02-23T11:32:17.317 回答
2

我发现了一些奇怪的东西,今天在我管理的网站上发生了同样的事情,问题似乎是链接中包含单词 facebook,所以尝试删除[facebook, fb, or f if it is a whole word]从您的网址中,它应该可以工作,我有一个类似的网址,open/ID/facebook/并且当我将其更改为fopen/ID/看起来很愚蠢时,它的唯一工作方式!

因此,在您的情况下,这可能是问题所在: https://www.exvo.com/invitations/9fb77bda665f0ae8f58843daec80a29b

尝试将您的 url 更改为没有 fb 或 facebook 或类似的东西。

于 2013-08-04T11:46:10.037 回答
0

我只使用发送对话框遇到了这个问题。我在公共 URL 上使用动态查询字符串参数。Facebook 已抓取公共 URL,但如果 Facebook 之前没有抓取该确切 URL ,则公共 URL和查询字符串参数的每次迭代都会导致此错误。

我通过强制 Facebook在尝试通过 FB UI 发送对话框发送URL之前抓取 URL 来解决此问题。使用 FB API 来点击参数graph.facebook.com中发布的 URL,并将参数设置为.idscrapetrue

像这样:

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]'
    });
});

我也在这里用这个解决方案回答了同样的问题。

于 2013-08-14T13:07:51.083 回答
0

执行以下操作为我修复了它:

  • gkimsal建议的更短token(参数中的这个字符串link9fb77bda665f0ae8f58843daec80a29b,它有 32 个字符长,现在是 16 个字符)
  • 接受2013 年 10 月的重大更改,这要求我将 OpenGraph 标记引入页面并放置namedescription以及picture_uri我在构建发送对话框重定向 uri 时包含的参数

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

于 2013-08-20T15:04:59.200 回答