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を利用する手順を以下に示します。
- (まだ作成していないなら)Twitterアプリをセットアップします。
- TwitterアプリのコンシューマーキーをParseの設定画面で登録します。
- Twitterアプリで登録したコールバックURLに妥当なURLを入力します。このURLはiOSやAndroidアプリケーション上では利用しませんが、Twitterの認証を有効にするために必要となります。
- 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!"); } } });
このコードを実行すると次のようになります。
- ユーザにTwitterのログインダイアログが表示されます。
- Twitterによって認証が行われ、アプリケーションはコールバックを受け取ります。
- Parse SDKはTwitterのデータを受け取り、それをParseUsetに保存します。Twitterのハンドルに基づき、新規ユーザの場合はそのユーザが作成されます。
- そのユーザを引数に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);