本文为您介绍鸿蒙客户端一键登录的集成方法及接口的功能示例。
在使用过程中如有疑问,可以提交工单联系阿里云技术工程师处理。
一键登录服务必须打开蜂窝数据流量并且手机系统给与应用蜂窝数据权限才能使用。
取号请求过程需要消耗用户少量数据流量。
移动运营商支持2G、3G、4G、5G数据流量,2G、3G因为网络环境问题时延和成功率会比4G低。
电信运营商支持4G、5G数据网络,不支持2G、3G数据流量。
联通运营商支持3G、4G、5G数据网络,不支持2G。
接入步骤
获取SDK
登录号码认证产品控制台,在概览页面右侧API&SDK区域,单击立即下载,进入API&SDK页面,选择号码认证鸿蒙平台,完成SDK下载。
导入项目
在DevEco Studio中建立你的工程。
将下载的SDK压缩包解压后的har文件拷贝至项目的扩展库目录下(可参考压缩包提供的demo项目)。
申请认证方案密钥
您调用API接口时,会用到方案Code和密钥等参数信息,请先在号码认证产品控制台,创建认证方案,获取方案Code和密钥等参数信息。
上述应用相关属性(包名、包签名和AppId),可通过以下鸿蒙官方代码获取。
bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO).then((bundleInfo)=>{
const packageName=bundleInfo.name
console.log("numberauth:pagname:"+packageName)
const sign=bundleInfo.signatureInfo.fingerprint
console.log("numberauth:sign:"+sign)
const appIdentifier=bundleInfo.signatureInfo.appIdentifier
console.log("numberauth:appid:"+appIdentifier)
})
如果您还未对新创建的项目进行签名,建议您通过DevEco Studio自动化签名方式对应用签名:
使用自动签名
使用自动签名功能实现签名,点击IDE右上角Project Structure图标:
在弹出界面依次选择Project > SigningConfigs,并勾选Automatically generate signature,等待自动签名完成即可,单击OK。
如您需要了解更多HarmonyOS应用配置签名信息,请参见HarmonyOS官方文档。
添加权限配置
编辑module.json5文件配置SDK相应权限:
"requestPermissions": [
{
"name": 'ohos.permission.INTERNET',
"name": 'ohos.permission.GET_NETWORK_INFO',
"name":"ohos.permission.SET_NETWORK_INFO"
}
]
权限说明
权限 | 说明 |
INTERNET | 允许应用程序联网,用于访问网关和认证服务器 |
GET_NETWORK_INFO | 获取网络状态,判断是否数据、wifi等 |
SET_NETWORK_INFO | 允许应用配置数据网络,取号时需要切换到蜂窝网络 |
交互流程详解
完整的功能交互流程请参见一键登录交互流程。
SDK方法说明
必调方法:创建功能入口实例
PhoneNumberAuthHelper
是SDK的功能入口,所有的接口调用都需要通过PhoneNumberAuthHelper
进行。
必调方法:配置授权页界面参数
public setAuthConfig(config: AuthUiConfig): void;
参数说明:
参数 | 参数类型 | 参数说明 |
config | AuthUiConfig | 授权页及二次弹窗界面参数信息实体类,请参见UI页面接口说明。 |
必调方法:设置密钥
public setAuthSDKInfo(secretInfo: string): void
参数说明:
参数 | 参数类型 | 参数说明 |
secretInfo | string | SDK密钥,在号码认证控制台申请认证方案获得 |
必调方法:Token获取流程
授权请求
应用调用本方法时,SDK将拉取用户授权页面,用户确认授权后SDK将返回token给应用端:
//totalTime 超时时间单位ms
public getLoginToken(totalTime: number): Promise<void>;
参数说明:
参数 | 参数类型 | 参数说明 |
totalTime | number | 超时时间设置 |
调用示例
this.helper.getLoginToken(5000)
方法返回在入口监控回调TokenListener中,示例代码如下:
class TokenListener implements TokenResultListener {
private page: Index
constructor(page: Index) {
this.page = page
}
onSuccess(msg: string): void {
console.log("auth:onSuccess:" + msg)
const result: object = JSON.parse(msg)
const code = result['_code'] + ''
const token = result['_token'] + ''
if (code === "600000") {
this.page.quitLoginPage()
}
}
onFailure(ret: string): void {
console.log("auth:onFailure:" + ret)
this.page.updateAuth()
}
}
必调方法:清除流程回调监听
在流程完成后需调用该方法清除监听避免后台监听:
public clearAuthListener():void
选调方法:退出授权页界面
进入授权页后用户如想退出登录可调用该方法:
public quitLoginPage(): Promise<void>;
选调方法:设置回调监听
添加或更新流程监听接口:
public setAuthListener(listener: TokenResultListener): void
参数说明:
参数 | 参数类型 | 参数说明 |
listener | TokenResultListener | 添加或更新流程监听接口 |
选调方法:检测运行环境
检测运行环境,判断设备环境是否适合SDK运行,结果会在接口回调监控中返回:
public checkEnvAvailable(type: number): void
参数说明:
参数 | 参数类型 | 参数说明 |
type | number | SDK功能类型。取值:1,一键登录;2,是本机号码校验。 |
选调方法:一键登录加速接口
加速接口可以加快拉起授权页速度,可提前调用,如hap初始化时:
public accelerateLoginPage(overdueTimeMills: number, listener: PreLoginResultListener): void
参数说明:
参数 | 参数类型 | 参数说明 |
overdueTimeMills | number | 超时时间,单位:ms。 |
listener | PreLoginResultListener | 回调监听接口 |
选调方法:SDK界面点击事件监听接口
授权页拉起后监听授权页及二次弹窗页点击事件:
public setUIClickListener(listener: AuthUIControlClickListener): void
参数说明:
参数 | 参数类型 | 参数说明 |
listener | AuthUIControlClickListener | 点击事件回调监听接口 |
UI页面接口说明
创建授权页
创建二次弹窗
SDK返回码
调用号码认证鸿蒙客户端SDK过程中返回的错误码请参见阿里云号码认证SDK返回码说明(鸿蒙客户端专属)。
SDK导入失败问题解决
SDK引入后,点击IDE右上角同步即可正常导入。
若出现无法导入情况:
需要将引入module的oh_modules及项目根目录下oh_modules删除。
然后在DevEco Studio底部Terminal中输入
ohpm install
重新导入即可。