【mBaas】Backendless②：Twitterログインをやってみるよ


***
前回：
[【mBaas】Backendeless①：Conoha VPSにBackendlessの環境を構築する](http://qiita.com/k_kuni/items/5e76bd32b4d67a9ed457)

参考：
http://dev.classmethod.jp/smartphone/iphone/parse-facebook-twitter/

***
前回、conohaVPSにBackendlessの環境を構築したので、Twitterログインをやってみたいと思います。
アカウントの作成から、アプリのよるログインまでの流れです。

##１ Twitterアプリを作成する

Twitterにログインした状態で、https://apps.twitter.com を表示する。

「Create New App」からアプリを作成する。
![スクリーンショット 2015-06-05 10.04.08.png](https://qiita-image-store.s3.amazonaws.com/0/70430/b0650265-5422-751b-d26d-23dde8448d7d.png "スクリーンショット 2015-06-05 10.04.08.png")

必要な内容を明記して、登録する。
![スクリーンショット 2015-06-05 10.09.05.png](https://qiita-image-store.s3.amazonaws.com/0/70430/4abb0ef7-823a-d3a4-2773-8b390467f5bb.png "スクリーンショット 2015-06-05 10.09.05.png")

以下のエラーが出たので、プロフィールから携帯電話を登録して再度実行する。
![スクリーンショット 2015-06-05 10.10.12.png](https://qiita-image-store.s3.amazonaws.com/0/70430/a1f8692e-ca11-3ffa-0f53-2b975ea88a76.png "スクリーンショット 2015-06-05 10.10.12.png")
※ 電話の認証ができなくて困ったときは、以下を参照（電話番号の頭「０」を省くだけ）
http://qiita.com/tk1024/items/644ead20793a6e869b83

既に登録されているアプリケーション名だとエラー時なりました。
![スクリーンショット 2015-06-05 10.32.32.png](https://qiita-image-store.s3.amazonaws.com/0/70430/9a43c3a4-e35a-78b7-aae4-aa0223e64716.png "スクリーンショット 2015-06-05 10.32.32.png")

登録完了
![スクリーンショット 2015-06-05 10.34.11.png](https://qiita-image-store.s3.amazonaws.com/0/70430/029437f3-9e33-beb4-3f72-513f1558dba5.png "スクリーンショット 2015-06-05 10.34.11.png")

##２ Backendlessのコンソール画面で、キーを登録する

Twitterのアプリ画面から「Keys and Access Token」タグを選択する。
・「Consumer Key (API Key)」「Consumer Secret (API Secret)」をコピーする。

![スクリーンショット 2015-06-05 10.44.05.png](https://qiita-image-store.s3.amazonaws.com/0/70430/cf295795-cd49-d033-dc4b-1c946c4eb40d.png "スクリーンショット 2015-06-05 10.44.05.png")

Backendlessのコーソール画面から、キーを設定する。
![スクリーンショット 2015-06-05 10.47.39.png](https://qiita-image-store.s3.amazonaws.com/0/70430/96e99a3d-f8c4-7614-306c-a41f29e42d10.png "スクリーンショット 2015-06-05 10.47.39.png")

##３ コンソールから実行

以下のコマンドを実行する
・「YOUR_APP_ID」と「REST_SECRET_KEY」は、アプリケーションのキーに書き換える。
（Twitterではなく、Backendlessに登録しているアプリのキー）
管理画面から確認できます。

```
curl -H application-id:YOUR_APP_ID -H secret-key: REST_SECRET_KEY -H application-type:REST -H Content-Type:application/json -X POST -d'{"fieldsMapping":{"userId":"twitterUserIdInBackendless", "screenName":"twitterScreenNameInBackendless"}, "redirect":true}' -v http://xxx.xxx.xxx.xxx:8080/api/v1/users/social/oauth/twitter/request_url
```

結果の中に「Location:」以降URLがあるので、コピーしてブラウザで表示する。
・ログインをするとユーザが登録される。
![スクリーンショット 2015-06-05 11.17.25.png](https://qiita-image-store.s3.amazonaws.com/0/70430/a9a08f16-310b-7968-dd31-6edab8c55185.png "スクリーンショット 2015-06-05 11.17.25.png")

##4 Objective-cでTwitterログインを実装する

「info.plist」にURLスキマーを登録する。Twitter認証をブラウザで行ってからアプリに戻ってくるときに使用されます。
![スクリーンショット 2015-06-08 9.17.24.png](https://qiita-image-store.s3.amazonaws.com/0/70430/9cd0207e-8461-378d-7a73-5dd2732090d3.png "スクリーンショット 2015-06-08 9.17.24.png")
アプリの受け取り側は、

```
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
  BackendlessUser *user = [backendless.userService handleOpenURL:url];
  if (user) {
       // apply your logic for the successful login. For example, switch the view
  }
  return YES;
}
```
で、実装する。

```
BackendlessUser *user = [backendless.userService handleOpenURL:url];
```

Twitterによるログインの呼び出しは、

```
    // レスポンダー
    Responder *responder = [Responder responder:self
                             selResponseHandler:@selector(responseHandler:)
                                selErrorHandler:@selector(errorHandler:)];

    // フィールドマッピング
    NSDictionary *fieldsMapping = @{@"userId":@"twitterUserIdInBackendless",
                                    @"screenName":@"twitterScreenNameInBackendless"};
    
    // Twitter認証
    [backendless.userService easyLoginWithTwitterFieldsMapping:fieldsMapping responder:responder];

```

次回は、Facebookか、基本的な使い方を・・