HarmonyOS鸿蒙Next中【AGC】认证服务用户重复登录报错

HarmonyOS鸿蒙Next中【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 ->
            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方法登出后在进行登录。


更多关于HarmonyOS鸿蒙Next中【AGC】认证服务用户重复登录报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next中,使用AGC(AppGallery Connect)认证服务时,如果用户重复登录,可能会遇到报错。这通常是由于用户在同一设备上多次尝试登录,导致会话冲突或令牌失效。AGC认证服务在用户登录时会生成一个唯一的会话标识符(Session ID),如果用户重复登录,新的会话会覆盖旧的会话,导致旧的会话失效,从而引发报错。

具体来说,AGC认证服务在用户登录时会生成一个访问令牌(Access Token)和刷新令牌(Refresh Token),这些令牌用于后续的API调用和用户身份验证。如果用户重复登录,新的令牌会覆盖旧的令牌,导致旧的令牌失效,从而在调用API时出现“无效令牌”或“会话已过期”的错误。

为了避免这种情况,开发者可以在用户登录时检查当前是否存在有效的会话,如果存在,则提示用户先注销再重新登录,或者直接使用现有的会话进行后续操作。此外,开发者还可以通过监听AGC认证服务的回调事件,及时处理会话失效的情况,避免应用出现异常。

总之,HarmonyOS鸿蒙Next中AGC认证服务用户重复登录报错的原因主要是会话冲突或令牌失效,开发者需要通过合理的会话管理和错误处理机制来避免这种情况的发生。

更多关于HarmonyOS鸿蒙Next中【AGC】认证服务用户重复登录报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中使用AGC(AppGallery Connect)认证服务时,若用户重复登录报错,可能是由于以下原因:

  1. 会话冲突:用户在同一设备上多次登录,导致会话冲突。建议在登录前检查当前会话状态,确保用户未登录。

  2. Token过期或无效:检查用户的认证Token是否过期或无效,及时刷新或重新获取Token。

  3. 并发登录限制:AGC可能限制了同一账户的并发登录次数。确保用户在同一时间仅在一个设备上登录。

  4. 网络问题:网络不稳定可能导致登录请求重复发送。建议优化网络连接,并增加重试机制。

  5. SDK版本问题:确保使用的AGC SDK版本是最新的,避免已知的Bug。

建议根据具体错误日志进行排查,或参考AGC官方文档获取更多解决方案。

回到顶部