【AGC】认证服务用户重复登录报错

问题描述:

认证服务用户重复登录报错,代码会产生错误码5的异常。但是不知道用户已登录的场景如何出现的?删除应用后再安装,还是会出现同样错误。

if (requestCode == REQUEST_SIGN_IN_LOGIN) {
            val huaweiAccountData = AccountAuthManager.parseAuthResultFromIntent(data)
            if (huaweiAccountData.isSuccessful) {
                val credential: AGConnectAuthCredential = HwIdAuthProvider.credentialWithToken(huaweiAccountData.result.getAccessToken())
                AGConnectAuth.getInstance().signIn(credential).addOnSuccessListener {
                    vm?.huaweiLogin(huaweiAccountData.result, it.user.uid)
                }.addOnFailureListener {exception: Exception? ->
                    if (exception is AGCAuthException){
                        com.huawei.agconnect.auth.AGCAuthException: code:5 message: already sign in a            user
                    }
                }
            }
        }

 

解决方案:

其实是开发者的代码逻辑有问题。正确的代码逻辑是requestCode == REQUEST_SIGN_IN_LOGIN的时候,就已经完成认证,按上面的代码逻辑,是完成认证以后又进行了一步认证,所以会出现用户已登录的情况。

建议按照文档指南,修改代码并重新进行集成。

可参考如下文档:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-auth-android-hwaccount-0000001053532656

另外错误码5表示当前已经使用一个帐号登录,在未登出情况下使用此帐号或者其他帐号登录,无法重复登录。可能的原因为之前已经通过其他第三方账号进行了认证服务的登录,或者进行了手机账号或邮箱账号的注册,也会自动进行登录。为避免此错误,可以在认证服务登录前通过对AGConnectAuth.getCurrentUser判空来判断当前认证服务是否已经登录。如果为空则没有登录,可以进行登录,如果不为空,可以先通过AGConnectAuth.signOut方法登出后在进行登录。

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

posted @ 2022-09-01 14:00  华为开发者论坛  阅读(70)  评论(0编辑  收藏  举报