HarmonyOS鸿蒙Next本地模拟器上登录注册可用验证码和密码登录,真机上两种方式都不行,怎么回事

HarmonyOS鸿蒙Next本地模拟器上登录注册可用验证码和密码登录,真机上两种方式都不行,怎么回事

import cloud, { VerifyCodeAction } from '@hw-agconnect/cloud'
import hilog from '@ohos.hilog'

@Entry
@Component
struct New_Login_Page {
  @State intervalId: number = 0
  @State countDown: number = 10
  @State verifyCodeButtonText: string = '获取验证码'
  @State verifyCodeButtonEnable: boolean = true
  @State phoneNumber: string = ''
  @State verifyCode: string = ''

  waiting() {
    this.verifyCodeButtonEnable = false
    this.intervalId = setInterval(() => {
      if (this.countDown < 0) {
        clearInterval(this.intervalId)
        this.countDown = 10
        this.intervalId = 0
        this.verifyCodeButtonText = '获取验证码'
        this.verifyCodeButtonEnable = true
        return
      }
      // 关键修改:更新按钮文本状态,触发UI重绘
      this.verifyCodeButtonText = `倒计时${this.countDown}s`
      this.countDown--
    }, 1000)
  }

  build() {
    Row() {
      Column({ space: 20 }) {
        Text('登录')
          .fontSize(40)
          .fontWeight(FontWeight.Bold)
        Divider()
        TextInput({ placeholder: '请输入手机号' })
          .width('100%')
          .type(InputType.Number)
          .padding(5)
          .borderRadius(5)
          .onChange((value) => {
            this.phoneNumber = value
          })
        Row({ space: 10 }) {
          TextInput({ placeholder: '请输入验证码' })
            .padding(5)
            .borderRadius(5)
            .layoutWeight(1)
            .type(InputType.Number)
          Button(this.verifyCodeButtonText)
            .enabled(this.verifyCodeButtonEnable)
            .onClick(() => {
              this.waiting()
              try {
                cloud.auth().requestVerifyCode({
                  verifyCodeType:{
                    kind:'phone',
                    phoneNumber:this.phoneNumber,
                    countryCode:'86'
                  },
                  action:VerifyCodeAction.REGISTER_LOGIN,
                  lang:'zh_CN',
                  sendInterval:10
                })
                console.log('message','发送验证码已发送')

                hilog.info(0, 'verifyCode', 'success')

              } catch (e) {
                console.log('message','发送验证码失败'+JSON.stringify(e))
                AlertDialog.show({ title: '错误', message: '验证码发送失败' })
                hilog.error(0, 'verifyCode', JSON.stringify(e))
              }
            })
      }
    }.height('100%').alignItems(VerticalAlign.Center).padding(30)
  }
}

更多关于HarmonyOS鸿蒙Next本地模拟器上登录注册可用验证码和密码登录,真机上两种方式都不行,怎么回事的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

你确定模拟器上可以吗?我这边拿你的demo去模拟器和真机上运行都是失败的,获取验证码那一步就报错。

更多关于HarmonyOS鸿蒙Next本地模拟器上登录注册可用验证码和密码登录,真机上两种方式都不行,怎么回事的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


cloud.auth() 不能用吗,这代码 哪里有问题呢?

在HarmonyOS鸿蒙Next本地模拟器上登录注册功能正常,但在真机上无法使用验证码和密码登录,可能是由于以下原因:

  1. 网络环境差异:本地模拟器通常运行在开发者的PC上,网络环境稳定且与服务器连接正常。而真机可能处于不同的网络环境,可能存在网络不稳定、防火墙限制或DNS解析问题,导致无法正常发送或接收验证码。

  2. 设备权限问题:真机可能缺少必要的权限,如网络访问权限、短信读取权限等,导致无法正常获取验证码或进行密码验证。

  3. API配置差异:本地模拟器与真机在API调用上可能存在差异,特别是在涉及网络请求、短信服务等外部依赖时,真机可能未正确配置相关服务或接口。

  4. 系统版本兼容性:真机的HarmonyOS版本可能与本地模拟器的版本不一致,导致某些功能在真机上无法正常工作。

  5. 安全策略限制:真机可能启用了更严格的安全策略,如禁止某些类型的网络请求或限制短信发送,导致登录功能无法正常使用。

  6. 调试模式差异:本地模拟器通常运行在调试模式下,可能启用了某些开发工具或配置,而真机运行在正式环境下,可能存在功能限制。

  7. 服务器配置问题:如果登录功能依赖于远程服务器,服务器可能对真机的请求进行了限制或未正确配置,导致无法正常登录。

  8. 设备硬件差异:真机与模拟器在硬件配置上存在差异,可能导致某些功能在真机上无法正常运行。

需要进一步排查具体原因,可以通过日志分析、网络抓包等手段进行诊断。

在HarmonyOS鸿蒙Next本地模拟器上登录注册功能正常,而在真机上无法使用验证码和密码登录,可能原因如下:

  1. 网络配置问题:真机网络环境与模拟器不同,可能未正确配置网络权限或网络连接不稳定。
  2. 权限设置问题:真机可能缺少必要的权限(如网络、短信等),需检查并确保权限已开启。
  3. API兼容性问题:真机与模拟器的API版本或设备特性可能存在差异,需确保代码兼容。
  4. 服务端配置问题:验证码服务或登录接口在真机环境下未正确响应,需检查服务端配置。
  5. 调试日志:通过日志分析真机运行时的错误信息,定位具体问题。

建议逐步排查上述可能性,确保真机环境与模拟器一致。

回到顶部