HarmonyOS鸿蒙NEXT中获取手机短信验证码登录注册真机调试注意事项
HarmonyOS鸿蒙NEXT中获取手机短信验证码登录注册真机调试注意事项
注意事项:
- 初始化认证服务auth、CloudFoundationKit,以及配置首选项preferences。
- 端云一体化工程调试目前只支持真机运行;不支持预览器和模拟器。
一、初始化
打开程序入口文件EntryAbility.ets,
首先引入相关文件:
import { GlobalContext } from '../utils/GlobalContext';
import { buffer } from '@kit.ArkTS';
import auth from '@hw-agconnect/auth'
import { cloudCommon } from '@kit.CloudFoundationKit';
import Constants from '../utils/Constants';
import PreferencesHandler from '../utils/PreferencesHandler';
在onCreate()方法内编写初始化代码:
// 初始化auth SDK
let file=this.context.resourceManager.getRawFileContentSync('agconnect-services.json');
let json:string=buffer.from(file.buffer).toString();
auth.init(this.context,json);
// 初始化端云一体化开发
let provider=auth.getAuthProvider();
cloudCommon.init({authProvider:provider});
// 初始化首选项,1次创建对象,避免重复实例化
GlobalContext.getContext().setObject(Constants.PREFERENCE_HANDLER,PreferencesHandler.instance);
在onWindowStageCreate()方法内配置首选项:
// 配置首选项
let preferencesHandler=GlobalContext.getContext().getObject(Constants.PREFERENCE_HANDLER) as PreferencesHandler;
preferencesHandler.configure(this.context.getApplicationContext());
完成以上初始化及配置,可正常获取短信验证码及登录成功!
可能遇到问题:
相同的手机号重复登录时,提示登录失败:already sign in a user ,please sign out at first.
这是因为已登录的手机号未正常登出,auth不允许相同手机号重复登录。
登出/退出功能在后续的“我的”页面实现。
更多关于HarmonyOS鸿蒙NEXT中获取手机短信验证码登录注册真机调试注意事项的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
收到的短信验证码带有AGC标识
更多关于HarmonyOS鸿蒙NEXT中获取手机短信验证码登录注册真机调试注意事项的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS NEXT中获取短信验证码进行真机调试时:
- 确保使用最新版DevEco Studio 4.0+
- 需申请ohos.permission.RECEIVE_SMS权限
- 配置自动填充功能需在config.json声明"ohos.permission.READ_SMS"
- 真机调试需开启USB调试模式
- 使用@ohos.telephony.sms接口实现短信监听
- 测试机需插入有效SIM卡
- 验证码拦截需注册SmsMMICodeObserver
注意:部分运营商短信可能因格式差异导致拦截失败。
在HarmonyOS NEXT中实现短信验证码登录时,确实需要注意几个关键点:
- 初始化顺序很重要:
- 必须确保先初始化auth SDK,再初始化CloudFoundationKit
agconnect-services.json
文件需要放在resources/rawfile
目录下
- 真机调试要求:
- 必须使用已实名认证的华为开发者账号
- 手机需要开启开发者模式并连接电脑
- 确保手机已登录与开发者账号相同的华为账号
- 常见问题处理:
- 登录失败时建议先调用
auth.signOut()
清除之前的登录状态 - 短信发送频率限制是60秒/次,频繁调用会失败
- 确保项目
agconnect-services.json
中的包名与config.json
一致
- 性能优化:
PreferencesHandler
建议使用单例模式- 云函数调用建议做防抖处理
- 安全建议:
- 不要在前端硬编码任何认证密钥
- 验证码建议设置有效期为5分钟
- 建议添加图形验证码防止短信轰炸
调试时可以使用console.log
输出auth.getCurrentUser()
查看当前登录状态,帮助排查问题。