7

Heroku で実行される Web ベースのニュース アプリがあります。ユーザーがアプリのニュース ストーリーにコメントを投稿すると、アプリは を使用してコメントをユーザーの Facebook ウォールに転送しfb_graphます。数週間前まではすべてが完璧に機能していました。説明できる理由はありませんが、現在、不可解な動作が見られます。

これで、ユーザーがストーリーにコメントを送信すると、FB API はOAuthException :: (#1500) The url you supplied is invalid. その後、同じユーザーが同じストーリーに追加のコメントを送信すると、それらのコメントはユーザーの FB フィードに問題なく投稿されます。

FB Graph API エクスプローラーを使用して、有効なアクセス トークンがあること、およびアプリがトークン所有者の FB フィードへの投稿を受け入れることを確認しました。

さらに不可解なことに、開発中の Web アプリを localhost で実行すると、すべての投稿が開発 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

最後に注意すべきことは、過去 2 週間でアプリが FB とやり取りする方法を変更した唯一のことは、FB を受け入れたことJuly Breaking Changesです。

誰でも手がかりを持っています。これは私を夢中にさせています!!!

4

4 に答える 4

3

はい、これは既知のバグであり、Facebook の開発者が調査していると主張していますが、私が見つけた興味深い点は次のとおりです。

を使用して 2 つの方法を使用して Facebook に投稿しRestFB APIます。まず、www.something.com などの URL を含むメッセージと URL を含まないメッセージに対して、昨夜、URL のない投稿はすべて機能し、URL を含む投稿は機能しないことに気付きました。

そのため、リンクの有無にかかわらず、すべての投稿に with link パラメータを使用せずに、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

これらの問題を解決するには、共有したい 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 に答える
0

私はこの問題を解決しようとしていましたが、この問題はほとんどすべての人に発生しているようです。PHP SDK を使用しています。

私が気づいたのは、リンクを投稿しようとしたときに初めてこのエラーが返されたことです。2回目の試行で、成功して投稿されました。

本当にハックなことに、エラーをチェックして、ウォールへの投稿を再試行しました。

$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 に答える