自由文投稿 (TextdataAPI) の利用方法

はじめに

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

リクエスト形式について

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

Textdata API はリクエスト形式により実装方法が異なります。
詳細につきまして下記参考ドキュメントをご確認ください。

API

method

Authorization Code Grant

Client Credentials Grant

TextData

GET/POST/PUT/DELETE

リクエスト可

リクエスト可

TextDataGroup

GET

リクエスト可

リクエスト可

TextDataGroup

POST/DELETE

対応していません

リクエスト可

Authorization Code Grant:Access Token を利用したリクエスト
Client Credentials Grant:GameサーバよりAPIサーバへ直接アクセスするリクエスト

リクエスト形式の詳細については こちら ご確認ください。
Client Credentials Grant を使用すれば、Mobage 非会員の状態でもテキストデータの作成・更新・削除が行えますが、Mobage 非会員の状態ではテキストデータの取得以外は行わないでください。
リクエスト形式の違いによる注意事項
  • Client Credentials Grantモデルにてテキストデータの作成、更新にはWriterID を必ず設定して下さい。
{ 
 "data" : "怪盗やってます",
 "writerId": "10012"
}
アプリ公開時の注意事項

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

主な指摘事項と対策

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

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

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

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

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

なおClient Credentials Grantモデルにてテキストデータを作成し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リファレンスを参照してください。
 
Textdata API の詳細については こちら ご確認ください。
RESTful API の使い方については こちら ご確認ください。

PREVIOUS

非対応ブラウザにてガイドを表示する

NEXT

ユーザーアップグレード機能の実装