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 認証の際に SDK 内で使用している Activity を利用可能にするために AndroidManifest.xml の application タグ配下に以下の内容を追加します。

<activity
    android:name="com.kii.cloud.storage.social.connector.KiiSocialNetworkConnectorLoginActivity"
    android:label="@string/app_name" />

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

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

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

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

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

// Create a KiiSocialConnect instance.
KiiSocialConnect connect = Kii.socialConnect(KiiSocialConnect.SocialNetwork.SOCIALNETWORK_CONNECTOR);

// Specify Twitter as the social network provider for logging in to Kii Cloud.
Bundle option = new Bundle();
option.putParcelable(KiiSocialNetworkConnector.PROVIDER, KiiSocialNetworkConnector.Provider.TWITTER);

// Set a Twitter access token and a Twitter secret.
option.putString(KiiSocialNetworkConnector.ACCESS_TOKEN, accessToken);
option.putString(KiiSocialNetworkConnector.ACCESS_TOKEN_SECRET, accessTokenSecret);

// Authenticate the user to Kii Cloud with the Twitter access token and the Twitter secret.
connect.logIn(null, option, new KiiSocialCallBack() {
  @Override
  public void onLoginCompleted(KiiSocialConnect.SocialNetwork network, KiiUser user, Exception exception) {
    if (exception != null) {
      // Handle the error.
      return;
    }
  }
});

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

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

  2. ソーシャル・ネットワークコネクターのインスタンスを socialConnect() メソッドで生成します。この際、SocialNetwork.SOCIALNETWORK_CONNECTOR を引数で指定します。

  3. Bundle を作成して対象のソーシャルネットワークを指定します。ここでは Provider.TWITTER を指定しています。

  4. Bundle に Twitter のアクセストークンとシークレットを設定します。

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

    アクセストークンを使ったログインでは Twitter 用のログイン画面は表示されず、全てバックグラウンドで処理が行われます。このため、SDK が用意する UI を利用してログイン する場合に必要な logIn() メソッドの第 1 引数の Activity の指定や onActivityResult() メソッドでの処理は不要です。

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

// Get the token bundle for the social network provider.
KiiSocialConnect connect = Kii.socialConnect(SocialNetwork.SOCIALNETWORK_CONNECTOR);
Bundle b = connect.getAccessTokenBundle();

// Get the access token.
String accessToken = b.getString("oauth_token");

// Get the secret.
String accessTokenSecret = b.getString("oauth_token_secret");

// Get the user ID provided by the social network provider.
String providerUserId = b.getString("provider_user_id");

// Check if a new Kii user was created when the logIn() method was executed.
boolean kiiNewUser = b.getBoolean("kii_new_user");

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

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

Activity activity = this.getActivity();
KiiSocialConnect connect = Kii.socialConnect(SocialNetwork.SOCIALNETWORK_CONNECTOR);

Bundle options = new Bundle();
options.putParcelable(KiiSocialNetworkConnector.PROVIDER, KiiSocialNetworkConnector.Provider.TWITTER);

// Login.
connect.logIn(activity, options, new KiiSocialCallBack() {
  @Override
  public void onLoginCompleted(SocialNetwork network, KiiUser user, Exception exception) {
    if (exception != null) {
      // Handle the error.
      return;
    }
  }
});

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

  1. Twitter アカウントを利用したログインを制御する Activity を作成します。
  2. ソーシャル・ネットワークコネクターのインスタンスを socialConnect() メソッドで生成します。この際、SocialNetwork.SOCIALNETWORK_CONNECTOR を引数で指定します。
  3. Bundle を作成し、ログインを行う対象のソーシャルネットワークを指定します。ここでは Provider.TWITTER を指定しています。
  4. logIn() メソッドでログイン処理を実行します。指定されたアカウントが新規の場合、ログイン処理に先立ちユーザー作成処理も同時に行われます。このメソッドはノンブロッキングのため、処理結果はコールバックで取得しています。

注意:さらに、以下の例のように Twitter 認証を完了するためのメソッドを onActivityResult() メソッドに追加する必要があります。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == KiiSocialNetworkConnector.REQUEST_CODE) {
    Kii.socialConnect(SocialNetwork.SOCIALNETWORK_CONNECTOR).respondAuthOnActivityResult(
      requestCode,
      resultCode,
      data);
  }
}

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

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

以下に、アカウントのリンク処理を行う例を示します。

// Assume that a user has logged in.

// Create a KiiSocialConnect instance.
KiiSocialConnect connect = Kii.socialConnect(KiiSocialConnect.SocialNetwork.SOCIALNETWORK_CONNECTOR);

// Specify Twitter as the social network provider for logging in to Kii Cloud.
Bundle option = new Bundle();
option.putParcelable(KiiSocialNetworkConnector.PROVIDER, KiiSocialNetworkConnector.Provider.TWITTER);

// Set a Twitter access token and a Twitter secret.
option.putString(KiiSocialNetworkConnector.ACCESS_TOKEN, accessToken);
option.putString(KiiSocialNetworkConnector.ACCESS_TOKEN_SECRET, accessTokenSecret);

// Link the Twitter account with the currently logged-in Kii user.
connect.link(null, option, new KiiSocialCallBack() {
  @Override
  public void onLinkCompleted(KiiSocialConnect.SocialNetwork network, KiiUser user, Exception exception) {
    if (exception != null) {
      // Handle the error.
      return;
    }
  }
});

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

  1. ソーシャル・ネットワークコネクターのインスタンスを socialConnect() メソッドで生成します。この際、SocialNetwork.SOCIALNETWORK_CONNECTOR を引数で指定します。

  2. Bundle を作成して対象のソーシャルネットワークを指定します。ここでは Provider.TWITTER を指定しています。

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

  4. link() メソッドを実行して、現在ログイン中のユーザーと Twitter アカウントをリンクします。このメソッドは非同期で実行され、コールバックで結果が通知されます。

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

Kii Cloud のユーザーアカウントと Twitter アカウントのリンクを解除する例を以下に示します。

// Assume that a user has logged in.

// Create a KiiSocialConnect instance.
KiiSocialConnect connect = Kii.socialConnect(KiiSocialConnect.SocialNetwork.SOCIALNETWORK_CONNECTOR);

// Specify Twitter as the social network provider for logging in to Kii Cloud.
Bundle option = new Bundle();
option.putParcelable(KiiSocialNetworkConnector.PROVIDER, KiiSocialNetworkConnector.Provider.TWITTER);

// Unlink the Twitter account from the currently logged-in Kii user.
connect.unlink(null, option, new KiiSocialCallBack() {
  @Override
  public void onUnLinkCompleted(KiiSocialConnect.SocialNetwork network, KiiUser user, Exception exception) {
    if (exception != null) {
      // Handle the error.
      return;
    }
  }
});

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

  1. ソーシャル・ネットワークコネクターのインスタンスを socialConnect() メソッドで生成します。この際、SocialNetwork.SOCIALNETWORK_CONNECTOR を引数で指定します。

  2. Bundle を作成して対象のソーシャルネットワークを指定します。ここでは Provider.TWITTER を指定しています。

  3. unlink() メソッドを実行して、現在ログイン中のユーザーと Twitter アカウントとのリンクを解除します。このメソッドは非同期で実行され、コールバックで結果が通知されます。