【问题标题】:Facebook Send dialog with API Error code: 100 ('link' is invalid)带有 API 错误代码的 Facebook 发送对话框:100(“链接”无效)
【发布时间】:2013-08-03 15:21:14
【问题描述】:

我希望通过 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%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

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

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

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

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

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

【问题讨论】:

  • 我遇到了同样的问题 - 我认为问题可能是我的链接返回到发布它们的同一画布 URL,但更改似乎并没有什么不同.今天早些时候工作了一点,但最后一个小时已经坏了(例如,我什至无法链接到 yahoo.com)。我怀疑这可能只是“某些代码被破坏,没有人知道或关心它”。 ://
  • 我想我已经解决了 - 我有一个像你这样的 URL: foo.com/path/to/code/id/6/rand/ab2e9c8dfb27385 我将 rand 部分添加到充当缓存破坏者,显然它不喜欢那些非常长的 ID 字符串。随着事情的发展,摆脱这些似乎有所帮助。我检查的其他事情 - og。每个 facebook 调试器的元标记 - URL 之一,我确保没有重定向。我添加了缺失的字段(图像、描述等)。这些只是“警告”,但完成所有这些并丢失长字符串给了我一个有效的“发送”。祝你好运!

标签: facebook


【解决方案1】:

就像 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 分配给某物。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这提示了我正确的答案。我不得不在我的链接中将 https 更改为 http,因为我还没有在我的网站上实际设置 https,所以 facebook 可能无法验证它。
    【解决方案3】:

    为我解决了以下问题:

    • 更短的tokenlink 参数中的这个字符串:9fb77bda665f0ae8f58843daec80a29b,原为 32 个字符长,现在为 16 个字符)由gkimsal 建议
    • 接受October 2013 breaking changes,这要求我将 OpenGraph 标记引入页面并删除我在构建发送对话框重定向 uri 时包含的 namedescriptionpicture_uri 参数

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

    【讨论】:

    • 但是元标签对我不起作用。仍然反映同样的问题。请给我建议..
    【解决方案4】:

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

    我通过强制 Facebook 尝试通过 FB UI 发送对话框发送 URL 来解决此问题。使用 FB API 来访问 graph.facebook.com,并将 id 参数中发布的 URL 和 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

    【讨论】:

      【解决方案5】:

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

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

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

      【讨论】:

      • 感谢您的回答,但很遗憾不是这样。我已将其更改为完全不同的内容(但将域名保留在其中),但仍然导致可怕的 100 错误。
      猜你喜欢
      • 2013-04-12
      • 2013-08-09
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多