mixi Connect » mixi Graph API » mixi API SDK for Android™ » APIの利用方法
APIの利用方法
Graph API にアクセスするには、MixiContainer#send() メソッドを利用します。利用するAPIに関わらず統一的な利用方法でAPIをコールすることが可能です。
ここでは、APIを呼び出すためのsendメソッドの使い方について説明します。各APIに必要なパラメータの意味や戻り値など個々のAPIに関する詳細情報については、下記ページを参照してください。
http://developer.mixi.co.jp/connect/mixi_graph_api
Graph APIを利用するために次の6種類のメソッドが用意されています。
void send(String endpointPath, CallbackListener listener)
GETリクエストにて情報を取得するAPIに利用します。最もシンプルな使い方になります。
引数
| String endpointPath | APIエンドポイントを指定します。 例:"/people/@me/@friends" |
|---|---|
| CallbackListener listener | 処理結果を受け取るためのコールバックメソッドを指定します。 |
People APIを使ってユーザ自身の情報を取得するサンプルコードを以下に示します。
mContainer.send("/people/@me/@self", new CallbackListener() {});
void send(String endpointPath, Map, CallbackListener listener)
パラメータで条件を指定してGETリクエストにて情報を取得する場合に利用します。
引数
| String endpointPath | APIエンドポイントを指定します。 例:"/people/@me/@friends" |
|---|---|
| Map |
パラメータをMap型で指定します。 |
| CallbackListener listener | 処理結果を受け取るためのコールバックメソッドを指定します。 |
条件を指定してPeople APIにアクセスする際のサンプルコードを以下に示します。
Map params = new HashMap();
params.put("fields", "thumbnailUrl profileUrl");
params.put("sortBy", "displayName");
params.put("sortOrder", "ascending");
mContainer.send("/people/@me/@friends", params, new CallbackListener() {});
void send(String endpointPath, HttpMethod method, CallbackListener listener)
HTTPメソッドを指定してAPIにアクセスする場合に利用します。
引数
| String endpointPath | APIエンドポイントを指定します。 例:"/people/@me/@friends" |
|---|---|
| HttpdMethod method | HTTPメソッドを指定します。 |
| CallbackListener listener | 処理結果を受け取るためのコールバックメソッドを指定します。 |
ボイスに付けられた「イイネ!」を削除する場合のサンプルコードを以下に示します。
mContainer.send("/voice/favorites/create/[Post-ID]", HttpMethod.DELETE, new CallbackListener() {});
void send(String endpointPath, HttpMethod method, Map, CallbackListener listener)
パラメータで条件を指定して任意のHTTPメソッドでリクエストを行う場合に利用します。
引数
| String endpointPath | APIエンドポイントを指定します。 例:"/people/@me/@friends" |
|---|---|
| HttpdMethod method | HTTPメソッドを指定します。 |
| Map |
パラメータをMap型で指定します。 |
| CallbackListener listener | 処理結果を受け取るためのコールバックメソッドを指定します。 |
このメソッドを使って、ボイスのつぶやきを投稿するサンプルコードを以下に示します。
Map params = new HashMap();
params.put("status", "ボイスてすと");
mContainer.send("/voice/statuses/update", HttpMethod.POST, params, new CallbackListener() {});
void send(String endpointPath, String contentType, InputStream stream, long length, CallbackListener listener)
写真や画像等のバイナリーデータ等をアップロードするAPIを利用する場合に利用します。
引数
| String endpointPath | APIエンドポイントを指定します。 例:"/people/@me/@friends" |
|---|---|
| String contentType | Content-Typeを指定します。 例:"image/jpeg" |
| InputStream stream | POST Bodyで送信されるデータを指定します。 |
| long length | InputStreamで送信するデータのサイズを指定します。 |
| CallbackListener listener | 処理結果を受け取るためのコールバックメソッドを指定します。 |
ボイスに写真付きのつぶやきを投稿するサンプルコードを以下に示します。
InputStream is = new FileInputStream("image.jpg");
String contentType = "image/jpeg";
String status = "foobar";
mContainer.send("/voice/statuses/update?status=" + status, contentType, is,
is.available(), new CallbackListener(){});
void send(String endpointPath, JSONObject json, CallbackListener listener)
JSONデータをPOSTするAPIにアクセスする場合に利用します。
引数
| String endpointPath | APIエンドポイントを指定します。 例:"/people/@me/@friends" |
|---|---|
| JSONObject json | JSONObjectを指定します。 |
| CallbackListener listener | 処理結果を受け取るためのコールバックメソッドを指定します。 |
結果の取得
実際には、パラメータのCallbackListenerは以下のように適切な処理を実装する必要があります。
mContainer.send("/people/@me/@self", new Listener());
private class Listener implements CallbackListener {
@Override
public void onComplete(Bundle values) {
// 正常時の処理
String json = values.getString("response");
}
@Override
public void onError(ErrorInfo e) {
// エラー時の処理
Log.e("mixi API Error", e.getErrorCode() + "," + e.getMessage());
}
@Override
public void onCancel() {
// ユーザーキャンセル時の処理
}
@Override
public void onFatal(ErrorInfo e) {
// 異常終了時の処理
}
}
APIへのリクエストが正常に完了した場合は、コールバックの onComplete メソッドの引数valuesにresponseパラメータとして渡されてきます。values.getString("response")などして参照することで、例えばPeople APIの場合は次のようなJSON形式の文字列を得ることができます。
{
"entry" : [
{
"id" : "qgjw87yg3djw",
"displayName" : "bert",
"thumbnailUrl" : "http://img.mixi.net/img/basic/common/noimage_member180.gif",
"profileUrl" : "http://mixi.jp/show_friend.pl?uid=qgjw87yg3djw"
},
・・・
],
・・・
}
エラー処理
必要なスコープが認可されていなかったり、パラメータに不備があるなど、もし何らかのエラーが発生した場合は、onErrorコールバックが呼び出されます。この onError コールバックの引数ErrorInfoを参照することで、具体的なエラー内容を把握することが可能です。
ErrorInfo#getErrorCode()
APIレスポンスののHTTPステータスコードを取得します。エラーコードの詳細は以下となります。
| エラーコード | 概要 |
|---|---|
| 400 (BAD_REQUEST) | パラメータに不備がある場合に発生します。 |
| 403 (FORBIDDEN) | APIに対するアクセス権がない場合に表示されます。 |
| 404 (NOT_FOUND) | APIが存在しない。 |
| 500 (INTERNAL_SERVER_ERROR) | mixi側の内部エラー(このエラーが発生した場合はお問い合わせください) |
ErorrInfo#getErrorMessage()
エラーの詳細な情報については、getErrorMessageを利用することでJSON形式で取得することができます。どんな内容が返されるかはAPIの種類によって異なりますが、例えば Voice API の status パラメータが空の場合は次のようなレスポンスが返ってきます。
{"request":"/2/voice/statuses/update","error":"Invalid status."}
APIの利用方法 に含まれるページ