QQ アカウント連携

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

QQ との連携設定

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

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

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

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

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

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

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

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

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

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

Swift 3:

func myRegistrationMethod(){
  // Set a QQ access token and a QQ OpenID.
  let options : Dictionary = ["accessToken":accessToken,"openID":openid]

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

Objective-C:

- (void)myRegistrationMethod {
  // Set a QQ access token and a QQ OpenID.
  NSDictionary *options = @{@"accessToken":accessToken, @"openID":openid};

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

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

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

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

  2. QQ のアクセストークンと OpenID を、optionsaccessToken パラメーターと openID パラメーターにそれぞれ設定します。

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

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

Swift 3:

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

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

// Get the OpenID.
let openID = (dict.object(forKey: "openID") 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:kiiConnectorQQ];

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

// Get the OpenID.
NSString *openID = [dict objectForKey:@"openID"];

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

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

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

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

なお、この例では QQ のアクセストークンと OpenID を取得済みであると仮定しています。取得方法については QQ の公式ドキュメント を参照してください。

Swift 3:

// Assume that a user has logged in.

func myAccountLinkMethod(){
  // Set a QQ access token and a QQ OpenID.
  let options : Dictionary = ["accessToken":accessToken,"openID":openid]

  // Link the QQ account with the currently logged-in Kii user.
  KiiSocialConnect.linkCurrentUser(.QQ, 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 QQ access token and a QQ OpenID.
  NSDictionary *options = @{
    @"access_token":accessToken,
    @"openID":openid
  }

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

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

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

Swift 3:

// Assume that a user has logged in.

func myAccountUnlinkMethod(){
  // Unlink the QQ account from the currently logged-in Kii user.
  KiiSocialConnect.unLinkCurrentUser(.QQ) { (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 QQ account from the currently logged-in Kii user.
  [KiiSocialConnect unLinkCurrentUser:kiiConnectorQQ
                                block:^(KiiUser *retUser, KiiConnectorProvider provider, NSError *retError) {
    if (retError != nil) {
      // Handle the error.
      return;
    }
  }];
}