オープン グラフ オブジェクト API を使用してオブジェクトを作成し、これらを公開されたストーリーに添付しています。オブジェクトとストーリーの両方が作成され、FB はすべてがうまくいったかのように ID を返します。
ただし、レビューのためにオブジェクト/ストーリーを送信すると、HTTP POST リクエストを 1 つしか作成していないにもかかわらず、(異なるオブジェクト タイプの) 2 つのオブジェクトが作成されることがわかりました。
バックグラウンド
- 私たちのアプリは名前空間「mynamespace」を使用しています
- 「myobject」という名前のカスタム オープン グラフ オブジェクトを作成しました。
- 「myaction」という名前のカスタム グラフを開くアクションを作成しました。
リクエストの詳細:
1) まず、オブジェクトを作成します。
POST /me/objects/mynamespace:myobject HTTP/1.1\r\nConnection: close\r\nHost: graph.facebook.com\r\nContent-Length: LENGTH\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n
URI デコードされた http 本文:
access_token=TOKEN&object={"url":"http://url.com","title":"My title","image":"https://imageurl.com","description":"My description"}
応答:
"{\"id\":\"123456789\"}"
2) 次に、ストーリーを作成します (このオブジェクトを参照して):
POST /me/mynamespace:myaction HTTP/1.1\r\nConnection: close\r\nHost: graph.facebook.com\r\nContent-Length: LENGHT\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n
URI デコードされた http 本文:
access_token=TOKEN&myobject=123456789&fb:explicitly_shared=true&message=User generated message
応答:
"{\"id\":\"12121212121\"}"
期待される結果
- タイプ mynamespace:myobject のオブジェクトを 1 つ作成する必要があります
- タイプ mynamespace:myaction の 1 つのストーリーを作成する必要があります
実結果
- タイプ mynamespace:myobject の 1 つのオブジェクトが作成されます
- タイプ mynamespace:myaction の 1 つのストーリーが作成されます
- Object 型のオブジェクトが 1 つ作成されます (レビュアーによる)。
- 投稿タイプのアクションが 1 つ作成されます (レビュアーによる)
ユーザー フィードとオブジェクト ブラウザーに 1 つのストーリーしか表示されませんでしたが、レビュアーは次のように述べて います。1 回のアプリ内アクションで複数のストーリーが公開されても、ユーザーは驚くべきではありません。私が取ったアクションは、「post」と「myaction」のストーリーを生み出しました。
([グラフを開く] -> [タイプ]) を調べたところ、このリクエストを行うたびに、タイプ「オブジェクト」のオブジェクトとタイプ「ポスト」のアクションが自動的に作成/定義されることがわかりました! これはレビュアーが不平を言っているに違いありませんが、何が間違っているのかを突き止めることができませんでした!
これを解決する方法についての提案は大歓迎です。
Open Graph API エクスプローラーを使用した場合とまったく同じ問題
Facebook Graph API エクスプローラーを使用してオブジェクトを作成すると、まったく同じことが起こります。そうすると、'Object' オブジェクトと 'Post' アクションが [Open Graph] -> [Types] の下に突然表示されます。現在、この問題には次の理由があります。
- オブジェクト/アクション/ストーリーが何らかの方法で正しく設定されていない
- レビュアーは、実際にはそうではなかったのに、それが問題だと思った
- FBのバグです
Graph API エクスプローラーで作成されたオブジェクト
Graph API エクスプローラーを使用してオブジェクトを作成すると、次のオブジェクトが生成されます。
{
"id": "4324324234234234",
"url": "http://url.com",
"type": "mynamespace:myaction",
"title": "My title",
"image": [
{
"url": "https://imageurl.com"
}
],
"description": "My description",
"updated_time": "2013-07-09T14:14:38+0000",
"created_time": "2013-07-09T14:14:38+0000",
"application": {
"id": "432423423423",
"name": "appname",
"url": "https://www.facebook.com/apps/appurl"
},
"is_scraped": false,
"post_action_id": "23423423423423423"
}
「post_action_id」は奇妙に思えます。そのオブジェクトをリクエストすると、次のようになります。
{
"id": "423423423423",
"from": {
"name": "My name",
"id": "234234"
},
"start_time": "2013-07-09T14:14:38+0000",
"end_time": "2013-07-09T14:14:38+0000",
"publish_time": "2013-07-09T14:14:38+0000",
"application": {
"name": "appname",
"namespace": "mynamespace",
"id": "432423423423"
},
"data": {
"object": {
"id": "4324324234234234",
"url": "http://url.com",
"type": "mynamespace:myaction",
"title": "My title"
}
},
"type": "og.posts",
"likes": {
"count": 0,
"can_like": true,
"user_likes": false
},
"comments": {
"count": 0,
"can_comment": true,
"comment_order": "chronological"
}
}
オブジェクトに関連する og.posts オブジェクトが既に存在するという事実は、レビューがここでの問題であると考えているものに違いありません。ただし、この og.posts オブジェクトが開いているグラフ オブジェクトとして自動的に表示される理由はまだわかりません。