mixi Developer Center (ミクシィ デベロッパーセンター)

mixi Connect

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の利用方法 に含まれるページ

このページの上部へ