我有一个在Heroku上运行的基于网络的新闻应用程序。当用户在我的应用上发布评论到新闻报道时,我的应用会使用fb_graph
将评论转发到用户的Facebook墙上。几周之前,一切都运转良好。我无法解释我现在看到一些令人困惑的行为。
现在,当用户向故事提交评论时,FB API将回复OAuthException :: (#1500) The url you supplied is invalid
。如果,同一个用户然后向同一个故事提交其他评论,则这些评论会被发布到用户的FB Feed中。
我使用FB Graph API资源管理器确认我有有效的访问权限,并且我的应用程序确实接受了令牌所有者的FB Feed的帖子。
为了让事情更令人费解,当在本地主机上开发我的网络应用程序时,所有帖子都可以通过我的开发FB应用程序完成。
def post_to_facebook(story, post)
auth = Authentication.find_by_provider_and_user_id("facebook", current_user.id)
if auth
me = FbGraph::User.me(auth.token)
if me.permissions.include?(:publish_stream)
begin
me.feed!(
:message => "#{best_name(current_user)} made the following post to NewsWick: #{post.contents}",
:name => story.title,
:link => "https://www.newswick.com/stories/"+story.id.to_s,
:description => "Story posted to the NewsWick world-wide news service" ,
:picture => best_photo(story)[:photo_url]
)
rescue => e
@msg = "Facebook posting error: "+ e.to_s
puts "Facebook feed posting error: #{e.message}"
end
else
@msg = "No longer authorized to post to Facebook."
end
end
return @msg
end
最后要注意的一点是,我在过去两周内与我的应用程序如何与FB进行交互的唯一方法就是我接受了FB的July Breaking Changes
。
任何人都有任何线索。这让我疯狂!!!“
答案 0 :(得分:3)
我有同样的问题,唯一不同的是我使用的是javascript api。
好像它是一个facebook错误,已在此处报告:https://developers.facebook.com/bugs/136768399829531
答案 1 :(得分:3)
是的,这是一个已知的错误,Facebook开发人员正在调查它,所以他们声称,但我发现有趣的是:
我使用RestFB API
使用2种方法发布到我的Facebook,首先,对于带有URL的消息,例如www.something.com和没有URL的消息,我昨晚意识到所有没有URL的帖子都有效,而带有URL的帖子没有。
所以我改变了我的所有实现,将消息发送到Facebook,而不使用所有帖子的链接参数,包含或不包含链接。
使用链接参数 - 抛出错误#1500
FacebookType publishMessageResponse = resftFBclient.publish(FACEBOOK_PAGE_ID
+"/feed", FacebookType.class, Parameter.with("message", "Hello StackOverFlow!"),
Parameter.with("link", "message with a link , www.me.com"));
没有链接参数 - 即使邮件包含网址/链接
,这也有效FacebookType publishMessageResponse = resftFBclient.publish(FACEBOOK_PAGE_ID. +
"/feed",FacebookType.class,Parameter.with("message", "My message"));
即使消息包含URL /链接,它也可以在FB上创建可点击的链接。难道FB正试图放弃链接实现并让我们弄清楚前者是否像链接实现一样工作?反正有什么不同?
那是残酷的!
干杯
Babajide
答案 2 :(得分:0)
我试图解决这个问题,这个问题似乎几乎每个人都在发生。 我正在使用PHP SDK。
我注意到的是,我第一次尝试发布链接时总是返回此错误。第二次尝试,它成功发布。
真的很笨拙,然后我检查了一个错误并重新尝试发布到墙上。
$errorCount = 0;
function postPicture($phrase)
{
try
{
$image = $_SESSION['photoLink'];
$facebook->setFileUploadSupport(true);
$response = $facebook->api(
'/me/feed',
'post',
array(
'message' => $phrase,
'picture' => 'http://mylink/pictures/facebook.png',
'link' => $image,
'caption' => 'My caption',
'description' => 'My description',
'type' => 'photo',
'name' => 'My name'
)
);
echo 'Success';
}
}
catch (FacebookApiException $e)
{
// You really should check if this $error is #1500 before doing that. I didn't :)
if($errorCount < 2)
{
postPicture($phrase);
$errorCount++;
}
else
{
$e = str_replace('"', "", $e);
$e = str_replace("'", "", $e);
echo 'Error ' . $e;
}
}
}
答案 3 :(得分:0)
要解决这些问题,请确保在要分享的网址所代表的网页的head部分添加这些og元数据标记:
<meta property="og:type" content="article" /> //or any other type like blog, website etc....
<meta property="og:url" content="your article url here" />
<meta property="og:title" content="your article title here" />
祝你好运!