Facebook墙贴错误:OAuthException ::(#1500)您提供的网址无效

时间:2013-05-15 19:20:23

标签: facebook facebook-graph-api heroku fb-graph

我有一个在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

任何人都有任何线索。这让我疯狂!!!“

4 个答案:

答案 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" />
祝你好运!