7

我有一个在 Heroku 上运行的基于网络的新闻应用程序。当用户在我的应用上对新闻故事发表评论时,我的应用会使用fb_graph. 直到几周前,一切都运行良好。我无法解释为什么我现在看到了一些令人费解的行为。

现在,当用户向故事提交评论时,FB API 会以OAuthException :: (#1500) The url you supplied is invalid. 如果同一用户随后向同一故事提交了其他评论,这些评论就会发布到用户的 FB 提要中。

我已使用 FB Graph API 资源管理器确认我有有效的访问令牌,并且我的应用确实接受到令牌所有者的 FB 提要的帖子。

更令人费解的是,当我在本地主机上运行我的开发中的 Web 应用程序时,所有的帖子都通过了我的开发 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

4 回答 4

4

我有同样的问题,唯一的区别是我使用的是 javascript api。

似乎这是一个 facebook 错误,已在此处报告:https ://developers.facebook.com/bugs/136768399829531

于 2013-05-16T16:49:54.820 回答
3

是的,这是一个已知的错误,Facebook 开发人员正在调查它,所以他们声称,但是我发现的一些有趣的事情是:

我使用 2 种方法在我的 Facebook 上发帖RestFB API,首先,对于带有 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"));

没有链接参数 - 即使消息包含 URL/链接,这也有效

FacebookType publishMessageResponse = resftFBclient.publish(FACEBOOK_PAGE_ID. +
"/feed",FacebookType.class,Parameter.with("message", "My message"));

即使消息包含 URL/链接并且它在 FB 上创建一个可点击的链接,这仍然有效。难道是FB试图放弃链接实现并让我们弄清楚前者就像链接实现一样工作?到底有什么区别?

太残忍了!

干杯

巴巴吉德

于 2013-05-22T08:32:23.320 回答
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;
      }
   }
}
于 2013-07-23T20:23:03.307 回答
0

要解决这些问题,只需确保在要共享的 url 所代表的页面的 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" />

祝你好运!

于 2013-11-14T13:02:50.217 回答