3

FacebookのOpenGraphチュートリアルに従って次のアプリの基盤を構築しようとしましたが、アクションのPOSTをどのように試みても、何らかの理由でエラーがスローされます。

新しいタイムラインを理解するすべての開発者にとって非常に役立つことを願って、ここでできる限り深く掘り下げていきます。

バトルアクションとヒーローオブジェクトは、それぞれを設定するときにデフォルト設定を使用して定義しました。transcendgameは私の名前空間です。

$idはFacebookユーザーのユーザーIDです(/ me /を使用してみましたが、これまで直接IDの問題はほとんどありませんでした)。

$herourl次のコンテンツを含む別のWebページを指すurlencoded文字列です。

 <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# transcendgame: http://ogp.me/ns/fb/transcendgame#">
  <meta property="fb:app_id"      content="[my id]"> 
  <meta property="og:type"        content="transcendgame:hero"> 
  <meta property="og:url"         content="http://apps.facebook.com/transcendgame/"> 
  <meta property="og:title"       content="Hercules"> 
  <meta property="og:description" content="As this game is still in development, you can ignore this feed post!"> 
  <meta property="og:image"       content="[an image url]">

アプリケーションのキャンバスページには、次のコードが含まれています。新しいアクションイベントをユーザーのタイムラインにPOSTする必要がありますが、常に「エラーが発生しました」と表示されます。同じ問題のサンプルヒーローオブジェクト(samples.ogp.me ...)でも試してみました。

<script>
    function doTest()
        {
            FB.api('/<?=$id?>/transcendgame:battle' + 
                        '?hero=<?=$herourl?>','post',
                        function(response) {
                if (!response || response.error) {
                        alert('Error occured');
                } else {
                    alert('Post was successful! Action ID: ' + response.id);
                    }
            });
        }
    </script>

    <a href="#" onclick="doTest(); return false">Test fb post</a>

JS SDKを呼び出して、fb.initを正しく実行しています。正直なところ、問題の解決方法は言うまでもなく、問題がどこにあるのかさえわかりません。

編集:ユーザーのアクセストークンをAPI呼び出しに正しく追加しました:

FB.api('/me/transcendgame:battle' + 
                    '?hero=<?=$herourl?>&access=<?=$token?>','post',

ただし、次のエラーが発生します。

Type: OAuthException

Message: (#3502) Object at URL [url] has og:type of 'game'. The property 'hero' requires an object of og:type 'transcendgame:hero'.

この質問の前半にリストされているように、Webページには間違いなくog:typeが正しく設定されているため、これは奇妙なことです。これは私が回避する必要のあるFacebookの問題ですか?

2番目の編集:最後の問題を修正しました。

アプリのキャンバスのURLを指すと想定していたog:urlですが、代わりにそれ自体を参照する必要があります。たとえば、オブジェクトがmydomain.com/object1.phpにある場合、コードは次のようになります。

<meta property="og:url"         content="http://www.mydomain.com/object1.php">

これが他の人に役立つことを願っています。

4

4 に答える 4

2

私は同じ問題を抱えており、コールバックをより役立つように変更しました:

  var fb_url = '/me/YOUR_NAMESPACE?key=value';
  FB.api(fb_url,'post',
    function(response) {
      console.log(response);
      if (!response || response.error) {
        var msg = 'Error occured';
        if (response.error) {
          msg += "\n\nType: "+response.error.type+"\n\nMessage: "+response.error.message;
        }
        alert(msg);
      } else {
        alert('Post was successful! Action ID: ' + response.id);
      }
    }
  );

アップデート

ようやくタイムラインへの投稿ができました。必要な変更は、JavaScript SDK の BETA バージョンを使用することでした。( https://developers.facebook.com/support/beta-tier/ )

これを使って:

<script src="//connect.beta.facebook.net/en_US/all.js#appId=xxx&amp;xfbml=1"></script>

これの代わりに:

<script src="//connect.facebook.net/en_US/all.js#appId=xxx&amp;xfbml=1"></script>
于 2011-09-27T13:59:35.200 に答える
1

最初は難しい投稿もありました。私の問題は、アクションの構成設定にありました。アクションが正確なオブジェクトに対して行われるように設定されていることを確認してください。これが私がセットアップして動作しているもののいくつかの画面です:

これらの設定が正しい場合は、Facebookから返されるエラーコードを確認し、ここに投稿してください。さらにサポートさせていただきます。

于 2011-09-27T14:45:07.657 に答える
1

og:url の最後の点については、そのとおりです。通常、OG URL は、グラフ内のオブジェクトの「主キー」と考えることができます。

于 2011-09-27T20:12:46.790 に答える
0

考えられる混乱を解消するために、ページのと同じではog:urlありません。注意すべき重要なことは、そこで参照しているものに関係なく、ページのにタグが含まれている必要があるということです。HAVEURLurlobject1.phpURLMETAhtml &lt;head&gt;

たとえば、URLキャンバスページのをそこに配置して、誰かがタイムライン上のアクションのハイパーリンクをクリックすると、そのページが開くようにします。METAオブジェクトのリンクからの情報が先頭にある限り'Get Code'、エラーは発生しません。

于 2012-06-01T14:36:22.593 に答える