我希望通过我们的应用程序(Exvo)向用户提供汇款给Facebook好友的能力,方法是通过Facebook向邀请页面发送URL。
我正在使用“发送”Facebook对话框(重定向到Facebook网站)。我正在重定向用户的确切网址是(to
字段已被编辑):
这给我提供了一个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不会产生任何错误:
只有关于推断属性的警告(我已经在某一点添加了这些属性,但它没有帮助)。
另请注意,偶尔(如10中的1),当我点击“发送”时,消息会通过,我看不到任何错误,这使得它更奇怪。
为什么会发生这种错误?我做错了什么?
答案 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)
为我做了以下修复:
token
(link
param:9fb77bda665f0ae8f58843daec80a29b
中的此字符串,长度为32个字符,现在为16,符合gkimsal name
,description
和picture_uri
参数URI 现在,Facebook在向用户显示“发送”对话框之前,必须事先获取我的页面以检索显示数据所需的数据(来自OG:title
,description
和image
)适当的用户对话。我认为这对我来说是最有帮助的。