Twitter アカウント連携

Twitter アカウントを用いたユーザー作成・ログインは、開発者ポータル上でアプリケーションの設定を行い、コードに数行追加するだけで簡単に実現できます。

Twitter との連携設定

Twitter アプリケーションの作成

まずは、Twitter アプリケーションを作成し、Twitter コンシューマーキーとコンシューマーシークレットを取得する必要があります。取得方法については Twitter の公式ドキュメント を参照してください。

Twitter アプリケーション作成の際には、以下の情報が必要です。"コールバック URL" は開発者ポータルにて指定したサーバー設定場所に対応する値を指定します。なお、${your-app-id} にはご利用の AppId を入力してください。

  • Name
  • Description
  • Website
  • コールバック URL
    • アメリカ合衆国:https://${your-app-id}.us.kiiapps.com/api/apps/${your-app-id}/integration/webauth/callback
    • 日本:https://${your-app-id}.jp.kiiapps.com/api/apps/${your-app-id}/integration/webauth/callback
    • シンガポール:https://${your-app-id}.sg.kiiapps.com/api/apps/${your-app-id}/integration/webauth/callback
    • ヨーロッパ:https://${your-app-id}.eu.kiiapps.com/api/apps/${your-app-id}/integration/webauth/callback

Twitter アプリの作成が完了すると、Twitter コンシューマーキーとコンシューマーシークレットが払い出されます。

Kii アプリケーションの設定

次の手順に従い、開発者ポータルより Twitter コンシューマーキーとコンシューマーシークレットの登録を行います。

  1. アプリケーションコンソール上で "Edit" ボタンをクリックします。

  2. "SOCIAL NETWORKS" をクリックします。

  3. "Twitter" をクリックし Twitter の設定画面を開きます。

  4. Twitter コンシューマーキーとコンシューマーシークレットを設定します。

Twitter アカウントによるログイン

Twitter アカウントによるログインは、以下の 2 通りの方法で利用可能です。

後者の UI を利用してログインする方法は近日中に削除を予定しております(サポート対象外の機能となります)。 前者のアクセストークンを利用する方法をご利用ください。

Twitter アクセストークンを利用してログイン

Twitter が発行するアクセストークンを用いて Kii Cloud にログインする例を以下に挙げます。

Swift 3:

func myRegistrationMethod(){
  // Set a Twitter access token and a Twitter secret.
  let options : Dictionary = ["accessToken":accessToken,"accessTokenSecret":accessTokenSecret]

  // Authenticate the user to Kii Cloud with the Twitter access token and the Twitter secret.
  KiiSocialConnect.log(in: .Twitter, options: options) { (retUser :KiiUser?, provider : KiiConnectorProvider, retError : Error? ) -> Void in
    if (retError != nil) {
      // Handle the error.
      return
    }
  }
}

Objective-C:

- (void)myRegistrationMethod {
  // Set a Twitter access token and a Twitter secret.
  NSDictionary *options = @{@"accessToken":accessToken, @"accessTokenSecret":accessTokenSecret};

  // Authenticate the user to Kii Cloud with the Twitter access token and the Twitter secret.
  [KiiSocialConnect logIn:kiiConnectorTwitter
                  options:options
                    block:^(KiiUser *retUser, KiiConnectorProvider provider, NSError *retError) {
    if (retError != nil) {
      // Handle the error.
      return;
    }
  }];
}

基本手順は以下のとおりです。

  1. Twitter のアクセストークンとシークレットを取得します。取得方法については、Twitter Kit のドキュメント を参照してください。

  2. Twitter のアクセストークンとシークレットを、optionsaccessToken パラメーターと accessTokenSecret パラメーターにそれぞれ設定します。

  3. logIn:options:block: メソッドでログイン処理を実行します。メソッドの引数に、対象のソーシャルネットワークとして kiiConnectorTwitter を指定します。指定されたアカウントが新規の場合、ログイン処理に先立ちユーザー作成処理も同時に行われます。このメソッドはノンブロッキングのため、処理結果はコールバックで取得しています。

ログインに成功すると、ユーザーに関する情報は SDK 内部にキャッシュされます。キャッシュされた情報は currentUser メソッドで取得できます。次の例のように accessTokenDictionary: メソッドを使うと、アクセストークンや関連パラメーターが取得できます。

Swift 3:

// Get the token dictionary for the social network provider.
let dict  = KiiSocialConnect.accessTokenDictionary(.Twitter)! as NSDictionary

// Get the access token.
let accessToken = (dict.object(forKey: "oauth_token") as? String)!

// Get the secret.
let accessTokenSecret = (dict.object(forKey: "oauth_token_secret") as? String)!

// Get the user ID provided by the social network provider.
let providerUserId = (dict.object(forKey: "provider_user_id") as? String)!

// Check if a new Kii user was created when the log(in:options:_:) method was executed.
let kiiNewUser : Bool = (dict.object(forKey: "kii_new_user") as? NSNumber)!.boolValue

Objective-C:

// Get the token dictionary for the social network provider.
NSDictionary *dict = [KiiSocialConnect accessTokenDictionary:kiiConnectorTwitter];

// Get the access token.
NSString *accessToken = [dict objectForKey:@"oauth_token"];

// Get the secret.
NSString *accessTokenSecret = [dict objectForKey:@"oauth_token_secret"];

// Get the user ID provided by the social network provider.
NSString *providerUserId = [dict objectForKey:@"provider_user_id"];

// Check if a new Kii user was created when the logIn:options:block: method was executed.
BOOL kiiNewUser = [dict valueForKey:@"kii_new_user"];

SDK が用意する UI を利用してログイン(非推奨)

Twitter アカウントを用いて Kii Cloud にログインする例を以下に挙げます。

Swift 3:

func myRegistrationMethod(){
  // Set options to nil to indicate that SDK will handle the UI
  let options : Dictionary<String,AnyObject>? = nil

  //Login

  KiiSocialConnect.log(in: .Twitter, options: options) { (retUser :KiiUser?, provider : KiiConnectorProvider, retError : Error? ) -> Void in
    if (retError != nil) {
      // Handle the error.
      return
    }
    // The user has logged in successfully
  }
}

Objective-C:

- (void)myRegistrationMethod {
  // Set options to nil to indicate that SDK will handle the UI
  NSDictionary *options = nil;

  // Login.
  [KiiSocialConnect logIn:kiiConnectorTwitter
                  options:options
                    block:^(KiiUser *retUser, KiiConnectorProvider provider, NSError *retError) {
    if (retError != nil) {
      // Handle the error.
      return;
    }
    // The user has logged in successfully
  }];
}

基本手順は以下のとおりです。

  1. オプションパラメーターに nil を指定します。
  2. logIn:options:block: メソッドでログイン処理を実行します。指定されたアカウントが新規の場合、ログイン処理に先立ちユーザー作成処理も同時に行われます。このメソッドはノンブロッキングのため、処理結果はコールバックで取得しています。

Kii アカウントと Twitter アカウントのリンク

すでに存在する Kii Cloud ユーザーを Twitter アカウントとリンクできます。リンクを行うと、このユーザーは Twitter アカウント認証経由で Kii Cloud にログインできるようになります。

以下に、アカウントのリンク処理を行う例を示します。linkCurrentUser:options:block: メソッドを実行するだけでアカウントがリンクされます。

なお、この例では Twitter のアクセストークンとシークレットを取得済みであると仮定しています。取得方法については、下記の 設定と実装の例 を参考にするか、Twitter の公式ドキュメント を参照してください。

Swift 3:

// Assume that a user has logged in.

func myAccountLinkMethod(){
  // Set a Twitter access token and a Twitter secret.
  let options : Dictionary = ["accessToken":accessToken,"accessTokenSecret":accessTokenSecret]

  // Link the Twitter account with the currently logged-in Kii user.
  KiiSocialConnect.linkCurrentUser(.Twitter, options: options) { (retUser :KiiUser?, provider : KiiConnectorProvider, retError : Error? ) -> Void in
    if (retError != nil) {
      // Handle the error.
      return
    }
  }
}

Objective-C:

// Assume that a user has logged in.

- (void) myAccountLinkMethod {
  // Set a Twitter access token and a Twitter secret.
  NSDictionary *options = @{
    @"access_token":accessToken,
    @"accessTokenSecret":accessTokenSecret
  }

  // Link the Twitter account with the currently logged-in Kii user.
  [KiiSocialConnect linkCurrentUser:kiiConnectorTwitter
                            options:options
                              block:^(KiiUser *retUser, KiiConnectorProvider provider, NSError *retError) {
    if (retError != nil) {
      // Handle the error.
      return;
    }
  }];
}

Kii アカウントと Twitter アカウントのリンク解除

Kii Cloud のユーザーアカウントと Twitter アカウントのリンクを解除する例を以下に示します。unLinkCurrentUser:block: メソッドを実行するだけでアカウントのリンクが解除されます。

Swift 3:

// Assume that a user has logged in.

func myAccountUnlinkMethod(){
  // Unlink the Twitter account from the currently logged-in Kii user.
  KiiSocialConnect.unLinkCurrentUser(.Twitter) { (retUser :KiiUser?, provider : KiiConnectorProvider, retError : Error? ) -> Void in
    if (retError != nil) {
      // Handle the error.
      return
    }
  }
}

Objective-C:

// Assume that a user has logged in.

- (void) myAccountUnlinkMethod {
  // Unlink the Twitter account from the currently logged-in Kii user.
  [KiiSocialConnect unLinkCurrentUser:kiiConnectorTwitter
                                block:^(KiiUser *retUser, KiiConnectorProvider provider, NSError *retError) {
    if (retError != nil) {
      // Handle the error.
      return;
    }
  }];
}