QQ アカウント連携

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

QQ との連携設定

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

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

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

次の手順に従い、開発者ポータルより QQ App ID の登録を行います。

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

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

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

  4. QQ App ID を設定します。

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

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

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

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

// Set a QQ access token and a QQ OpenID.
option.putString(KiiSocialNetworkConnector.ACCESS_TOKEN, accessToken);
option.putString(KiiSocialNetworkConnector.OPEN_ID, openID);

// Authenticate the user to Kii Cloud with the QQ access token and the QQ OpenID.
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. QQ のアクセストークンと OpenID を取得します。取得方法については QQ の公式ドキュメント を参照してください。

    注意:QQ SDK 経由で QQ アカウントにログインを行う際、get_user_info パーミッションを取得してください(詳細は QQ の公式ドキュメント を参照してください)。このパーミッションは Kii Cloud がログイン処理の過程で QQ のユーザープロファイルを取得するために必要です。また、必要に応じて QQ ユーザーがこのパーミッションを許可しなかったケースの処理を実装してください。

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

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

  4. Bundle に QQ のアクセストークンと OpenID を設定します。

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

ログインに成功すると、ユーザーに関する情報は SDK 内部にキャッシュされます。キャッシュされた情報は KiiUser.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 OpenID.
String openID = b.getString("openID");

// 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");

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

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

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

// Assume that a user has logged in.

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

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

// Set a QQ access token and a QQ OpenID.
option.putString(KiiSocialNetworkConnector.ACCESS_TOKEN, accessToken);
option.putString(KiiSocialNetworkConnector.OPEN_ID, openID);

// Link the QQ 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.QQ を指定しています。

  3. Bundle に QQ のアクセストークンと OpenID を設定します。これらの取得方法については QQ の公式ドキュメント を参照してください。

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

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

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

// Assume that a user has logged in.

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

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

// Unlink the QQ 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.QQ を指定しています。

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