这已经工作了一个多星期了。
FB.ui({
method: 'send',
to: connectionid,
name: subject,
picture: staticurl + 'images/logoformysite.png',
link: homeurl + '/' + username + '/something=' + var1 +'&somethingelse=' + encodeURI(var2) + '&evenmore=' + encodeURI(var3),
description: invitemessage,
});
上周我最初有一个错误,如果网址在Facebook域内,Facebook会阻止它。我修复了这一点,现在图片和链接都不属于Facebook域,来自我的网站。但这种情况今天开始发生,没有任何改变。这是间歇性的。
An error occurred. Please try again later.
API Error Code: 100 API Error Description: Invalid parameter Error Message: 'link' is invalid.
目前尚不清楚为什么它有时会工作,而不是其他时间,即使我将它发送给同一个用户。想知道我是否错过了公告。但我希望它至少会一直失败但事实并非如此。
更新 我不确定如何在对话框中设置的链接可以在页面上全局设置。它会将邮件的收件人发送错误的链接。看一下上面如何在新的开放图形世界中起作用的例子真的很有帮助。
2013年8月12日答案
问题围绕着我们的url是动态的,每次都需要强制缓存。我现在对“https://developers.facebook.com/tools/debug/og/object”进行ajax调用以刷新它,然后启动发送对话框。
答案 0 :(得分:9)
我遇到了同样的问题,自上周以来一直停止工作。
以下是我的解决方案:
转到Facebook debugger并添加您的网址。 单击“调试”并修复Facebook显示的所有警告。
要修复我的问题,我必须在页面中添加og.url
元标记。该值应与您要共享的值完全相同(无重定向)。
然后Facebook发给我这个通知(警报):
您的应用XXX现在符合Stream post URL 安全迁移。无需采取进一步行动。
尝试再次与FB.ui
分享您的链接,现在您的帖子应自动显示您的og
值。
注意:强>
Facebook October breaking change会自动使用这些og
元素而不是自定义FB.ui
参数,因此您现在可以激活更改以准备好并从代码中删除名称/图片/说明。
<强>更新强> 即使我上面提到的内容正确实现,这个问题也会再次发生。
如果是你的情况,那是因为你必须强制Facebook“刮”你的页面。当您使用Facebook对象调试器或在时间线/私人消息上复制/粘贴链接时,此过程由Facebook自动完成。如果您使用JavaScript SDK,您必须要求Facebook索引并缓存您的页面。
你不会在与JavaScript SDK相关的Facebook文档中找到这个(或者你很幸运),所以为了节省你找到这个令人难以置信的问题的所有日子(请记住Facebook只说你的链接无效)你可以有关this page的更多详情。
我尝试使用Graph API来强制我新创建的页面被Facebook抓取,如果它适合你,那么你很幸运。未提及但产生相同结果的第二种方法是向Facebook对象调试器页面发送请求并在URL中添加您的页面链接(例如https://developers.facebook.com/tools/debug/og/object?q=YourPageUrlHere
)。通过这样做Facebook这次会刮掉你的页面,现在你可以用Facebook API分享你的链接,现在一切正常。
答案 1 :(得分:5)
我可以确认,在我尝试通过FB UI对话框发送相同的URL之前,我强迫Facebook首先抓取URL时,这个问题已得到解决。
示例代码:
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]'
});
});
答案 2 :(得分:0)
确保当facebook请求您的网址时,它永远不会被转发。
这样做的方法是在facebook上展示自己的特殊页面,其中包含所有正确的成分。
这是一个例子(基于php + symfony 1.4):
<?php
if(preg_match('/facebookexternalhit/i', $request->getHttpHeader('User-Agent')))
{ ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta property="fb:app_id" content="<?php echo sfConfig::get('app_facebook_app_id'); ?>" />
<meta property="og:url" content="<?php echo sfContext::getInstance()->getRequest()->getUri(); ?>" />
<meta property="og:title" content="<?php echo $title; ?>" />
<meta property="og:description" content="<?php echo $description; ?>" />
<meta property="og:image" content="<?php echo $image; ?>" />
</head>
<body>
hello Facebook!
</body>
</html>
<?php
}
?>