How to use TextData API

This page is not available in English.
Please select another language.
 

はじめに

Textdata API とは、ユーザからの自由入力文を投稿、削除、取得、更新できる機能です。
当社にて不適切と判断した投稿は、パートナー様に通知することなく削除する場合があります。
ここでは当社のアプリ申請確認時に多く見られるTextdata API の実装に関する指摘事項の傾向とその対策について説明します。

Textdata API について

デバイスによるリクエスト形式の違い

Textdata API はデバイスにより利用できるリクエスト形式が異なります。

デバイス

リクエスト形式

SmartPhoneApp (ShellApp)

Proxy(3-legged) / Trusted(2-legged)

SmartPhoneWeb

Proxy(3-legged) / Trusted(2-legged)

FeaturePhone

Proxy(3-legged) / Trusted(2-legged)

PC

Trusted(2-legged)

 
Proxy モデル:Gadget サーバにより発行された opensocial_viewer_id を必要としたリクエスト
Trusted モデル:Game サーバよりAPIサーバへ直接アクセスするリクエスト
 

リクエスト形式の違いによる注意事項
  • Trusted(2-legged) モデルにてテキストデータの作成、更新には WriterID を必ず設定して下さい。設定されていない場合の値は「0」になるためパートナー様により操作された扱いになります。
     
    { 
     "data" : "怪盗やってます",
     "writerId": "10012"
    }
    
アプリ公開時の注意事項

本番環境で Textdata API を使用するためには、Sandbox 環境とは別にテキストデータグループの作成が必要になります。

 

主な指摘事項と対策

テキストデータの投稿内容にユーザが入力していない文字列が含まれている。

以下のように年月日やデータ管理用の数値をユーザが実際に入力した自由文に付加した状態で Textdata API にリクエストされますと、
正しく監視ができなくなりますので、API へはユーザが実際に入力した自由文のみをリクエストいただくようお願いします。

{ 
 "data" : "ここはゲームデータ20130101 ここからユーザ投稿文 このアプリ面白いです"
}
投稿相手ユーザが指定された投稿にて、OwnerID が指定されていない。

投稿相手ユーザが指定された投稿については、相手のユーザ ID (OwnerID) を API へリクエストいただく必要があります。
また OwnerID にユーザ ID 以外の値を指定することはお控えください。
以下はユーザ A がユーザ B (10009)のメッセージ機能へ投稿した場合の正しいリクエスト例になります。

{
   "data" : "このステージクリアしたいです。応援してください。",
   "ownerId" : "10009"
}

なお Trusted(2-legged) モデルにてテキストデータを作成し OwnerID を明示的に指定しない場合の値は「0」になりますのでご注意ください。

アプリ上で投稿内容を削除しても、正しく削除が反映されていない。

TextdataAPI へ Proxy モデルで DELETE リクエストされていない可能性がございます。
以下はグループ comment の投稿 id:20 を削除した場合のリクエスト例になります。正しく処理されると 202 Accepted が返ります。

DELETE /textdata/@app/comment/@all/20

なお、正しくリクエストされている場合は、game サーバにて投稿内容をキャッシュされていないかご確認ください。

当社にて不適切と判断した投稿を削除したが、アプリ上では削除が反映されていない。

通報等により当社にて不適切と判断した投稿を削除した場合、テキストデータ取得しても存在しない投稿idが指定されるため 404 Not Found が返りますのでご注意ください。
この場合アプリ上に自由文が表示されたままの状態が問題となりますので、game サーバにて投稿内容をキャッシュされていないかご確認ください。

よく見られる事例の紹介

当社確認時に、アプリ上と異なった状態で反映されている。

投稿内容と一緒に改行を意味するタグや特殊な表現が含まれている。

{
 "data" : "ここはユーザ投稿文<br>このアプリ面白いです"
}

同じ投稿内容が重複して送られている。

例)プロフィール文を編集した場合に複数回の API へのリクエストが実行されている
アプリ上には表示されている投稿内容が当社側で確認できない。

自由文が投稿または編集された場合にアプリ上は反映されるが当社側で確認できない

例1)API リクエストのタイミングがアプリ操作と非同期におこなわるためタイミングがずれていた
例2)アプリ上の更新ボタンや特定操作がおこないと API がリクエストされない実装になっていた
当社で投稿を削除した後のアプリ上で問題が発生する。

投稿内容を削除すると該当箇所の全体がアプリから消えてしまう。

例1)ギルド名を削除するとリンクが消滅してしまいページ遷移できない状態となる
例2)削除後に再投稿された内容が確認できない
例3)削除後に再投稿された内容が確認時に OwnerID が存在しないなど内容が変わっている

参考資料

Textdata API では以下の機能を利用できます。

  • テキストデータグループの作成 (POST)、取得 (GET)、削除 (DELETE)
  • テキストデータの作成 (POST)、取得 (GET)、更新 (PUT)、削除 (DELETE)

詳しくは API リファレンスを参照してください。
 
RESTful API SmartphoneApp の詳細については こちら ご確認ください。
RESTful API SmartphoneWeb の詳細についてはこちらご確認ください。
RESTful API FeaturePhone の詳細についてはこちらをご確認ください。
RESTful API PC の詳細については こちら をご確認ください。

更新履歴

  • 2014/7/23
    • よく見られる事例を追記
       
  • 2013/11/18
    • 新規作成

 

 

PREVIOUS

network tcp time wait tips