0
0

More than 3 years have passed since last update.

Android端末におけるHUAWEI IDログイン機能の詳細実装手順4-HMS端末でログイン

Last updated at Posted at 2021-04-01

Android SDKによるログイン機能の実装方法

ログイン機能は2つの処理に分けられます。
1.ログイン画面を表示する処理
2.ログイン結果を受け取る処理

ログイン画面を表示する処理

1.HuaweiIdAuthParamsHelperでログインパラメータを生成します。
2.HuaweiIdAuthManager.getService()でHUAWEI ID認証サービスを取得します。
3.startActivityForResult()でHUAWEI IDのログイン画面(別Activity)を開きます。

HmsHuaweiIdLogic.kt
companion object {
    private const val REQUEST_CODE_SIGN_IN_AUTHORIZATION_CODE = 1000
}

private var authManager: HuaweiIdAuthService? = null

override fun signIn(activity: Activity) {
    val param = HuaweiIdAuthParamsHelper(HuaweiIdAuthParams.DEFAULT_AUTH_REQUEST_PARAM)
        .setAuthorizationCode()
        .createParams()
    authManager = HuaweiIdAuthManager.getService(activity.applicationContext, param)
    authManager?.let {
        activity.startActivityForResult(it.signInIntent,
            REQUEST_CODE_SIGN_IN_AUTHORIZATION_CODE
        )
    }
}

ログイン結果を受け取る処理

1.ログイン結果はonActivityResult()を通して返ってきます。
2.dataを直接に使うことができません。HuaweiIdAuthManager.parseAuthResultFromIntent()で変換する必要があります。
3.変換後、まずisSuccessfulをチェックしなければなりません。
4.実際の変換結果はresultに入ってます。

HmsHuaweiIdLogic.kt
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    when (requestCode) {
        REQUEST_CODE_SIGN_IN_AUTHORIZATION_CODE -> {
            val authHuaweiIdTask = HuaweiIdAuthManager.parseAuthResultFromIntent(data)
            if (authHuaweiIdTask.isSuccessful) {
                with (authHuaweiIdTask.result) {
                    // ユーザーID = this.unionId
                    // プロフィール画像 = this.avatarUriString
                    // ユーザー名 = this.displayName
                }
            } else {
                // エラー処理
                // エラーコード = (authHuaweiIdTask.exception as ApiException).statusCode
            }
        }
    }
}

シリーズ

GitHub

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0