Murayama blog.

AIの民主化。

AndroidでParse入門 - Twitter Users -

元ネタ

こちらを参考にTwitter Usersについてまとめます。
https://parse.com/docs/android_guide#twitterusers

前回の記事はこちら。
AndroidでParse入門 - Facebook Users - - Murayama blog.

Twitter Users

ParseはFacebookと同様にTwitter認証機能を提供しています。Parse SDKを使えば、ParseUserにTwitterアカウントをリンクすることができます。わずか数行のコードで"Twitterでログイン"を実装できます。また、データをParse上に保存することができます。

Setup

ParseでTwitterを利用する手順を以下に示します。

  1. (まだ作成していないなら)Twitterアプリをセットアップします。
  2. TwitterアプリのコンシューマーキーをParseの設定画面で登録します。
  3. Twitterアプリで登録したコールバックURLに妥当なURLを入力します。このURLはiOSAndroidアプリケーション上では利用しませんが、Twitterの認証を有効にするために必要となります。
  4. Application.onCreate()メソッドにて、Parse SDKを初期化します。
ParseTwitterUtils.initialize("YOUR CONSUMER KEY", "YOUR CONSUMER SECRET");

Twitterに関連する部分で問題が発生した場合は、Twitterの公式ドキュメントを参照してください。

ParseユーザがTwitterを使うには2つの方法があります。(1)Twitterユーザとしてログインし、ParseUserを作成する方法、(2)既存のParseUserをTwitterユーザにリンクさせる方法の2つです。

Login & Signup

ParseTwitterUtilsは、Twitterによるサインアップ、ログイン処理を提供します。login()メソッドを使うと次のようになります。

ParseTwitterUtils.logIn(this, new LogInCallback() {
  @Override
  public void done(ParseUser user, ParseException err) {
    if (user == null) {
      Log.d("MyApp", "Uh oh. The user cancelled the Twitter login.");
    } else if (user.isNew()) {
      Log.d("MyApp", "User signed up and logged in through Twitter!");
    } else {
      Log.d("MyApp", "User logged in through Twitter!");
    }
  }
});

このコードを実行すると次のようになります。

  1. ユーザにTwitterのログインダイアログが表示されます。
  2. Twitterによって認証が行われ、アプリケーションはコールバックを受け取ります。
  3. Parse SDKTwitterのデータを受け取り、それをParseUsetに保存します。Twitterのハンドルに基づき、新規ユーザの場合はそのユーザが作成されます。
  4. そのユーザを引数にLogInCallbackが呼ばれます。

Twitterのログインダイアログ、アクティビティを表示するために、現在のContext(多くの場合、Activity内で呼ばれるのでthis)を指定しなければなりません。

Linking

既存のParseUserとTwitterアカウントをリンクするには、次のように実装します。

if (!ParseTwitterUtils.isLinked(user)) {
  ParseTwitterUtils.link(user, this, new SaveCallback() {
    @Override
    public void done(ParseException ex) {
      if (ParseTwitterUtils.isLinked(user)) {
        Log.d("MyApp", "Woohoo, user logged in with Twitter!");
      }
    }
  });
}

リンクはログイン処理と似ています。違うところはログイン成功時に、既存のParseUserオブジェクトがTwitterによって更新されていることです。Twitterでのログインは、既存のアカウントにユーザを関連づけることになります。

ユーザとTwitterのリンクを削除するには、次のように実装します。

ParseTwitterUtils.unlinkInBackground(user, new SaveCallback() {
  @Override
  public void done(ParseException ex) {
    if (ex == null) {
      Log.d("MyApp", "The user is no longer associated with their Twitter account.");
    }
  }
});

Twitter API Calls

Parse SDKは、TwitterとリンクしたParseUserによって、Twitter REST APIを呼び出す単純な方法を提供します。ParseTwitterUtilsは、シングルトンのTwitterオブジェクトを返すので、それを使ってリクエストを送ることができます。*1

HttpClient client = new DefaultHttpClient();
HttpGet verifyGet = new HttpGet(
        "https://api.twitter.com/1/account/verify_credentials.json");
ParseTwitterUtils.getTwitter().signRequest(verifyGet);
HttpResponse response = client.execute(verifyGet);

*1:サンプルのTwitterREST APIが古くなってるのでご注意を。2013年12月現在、1.1にしないとエラーになります