HarmonyOS 鸿蒙Next 华为一键登录时获取不到匿名手机号
HarmonyOS 鸿蒙Next 华为一键登录时获取不到匿名手机号
华为一键登录时,应用传对应的scope调用AuthorizationWithHuaweiIDRequest请求获取AuthorizationWithHuaweiIDResponse响应结果,响应结果没有匿名手机号
我们已经
配置Client ID
也有quickLoginMobilePhone权限
具体代码
getQuickLoginAnonymousPhone() {
// 创建授权请求,并设置参数
const authRequest = new authentication.HuaweiIDProvider().createAuthorizationWithHuaweiIDRequest();
// 获取匿名手机号需传quickLoginAnonymousPhone这个scope,传参之前需要先申请“华为账号一键登录”权限
//(权限名称为:quickLoginMobilePhone),后续才能获取匿名手机号数据
authRequest.scopes = [‘quickLoginAnonymousPhone’];
// 用于防跨站点请求伪造
authRequest.state = util.generateRandomUUID();
// 一键登录场景该参数只能设置为false
authRequest.forceAuthorization = false;
const controller = new authentication.AuthenticationController();
try {
controller.executeRequest(authRequest).then((response: authentication.AuthorizationWithHuaweiIDResponse) => {
// 获取到UnionID、OpenID、匿名手机号
const unionID = response.data?.unionID;
const openID = response.data?.openID;
const anonymousPhone = response.data?.extraInfo?.quickLoginAnonymousPhone as string;
if (anonymousPhone) {
WPlog.i(TAG, ‘Succeeded in authentication.’);
const quickLoginAnonymousPhone: string = anonymousPhone;
return;
}
WPlog.i(TAG, ‘Succeeded in authentication. AnonymousPhone is empty.’);
// 未获取到匿名手机号需要跳转到应用自定义的登录页面
}).catch((error: BusinessError) => {
this.dealAllError(error);
})
} catch (error) {
this.dealAllError(error);
}
}
我们已经
配置Client ID
也有quickLoginMobilePhone权限
具体代码
getQuickLoginAnonymousPhone() {
// 创建授权请求,并设置参数
const authRequest = new authentication.HuaweiIDProvider().createAuthorizationWithHuaweiIDRequest();
// 获取匿名手机号需传quickLoginAnonymousPhone这个scope,传参之前需要先申请“华为账号一键登录”权限
//(权限名称为:quickLoginMobilePhone),后续才能获取匿名手机号数据
authRequest.scopes = [‘quickLoginAnonymousPhone’];
// 用于防跨站点请求伪造
authRequest.state = util.generateRandomUUID();
// 一键登录场景该参数只能设置为false
authRequest.forceAuthorization = false;
const controller = new authentication.AuthenticationController();
try {
controller.executeRequest(authRequest).then((response: authentication.AuthorizationWithHuaweiIDResponse) => {
// 获取到UnionID、OpenID、匿名手机号
const unionID = response.data?.unionID;
const openID = response.data?.openID;
const anonymousPhone = response.data?.extraInfo?.quickLoginAnonymousPhone as string;
if (anonymousPhone) {
WPlog.i(TAG, ‘Succeeded in authentication.’);
const quickLoginAnonymousPhone: string = anonymousPhone;
return;
}
WPlog.i(TAG, ‘Succeeded in authentication. AnonymousPhone is empty.’);
// 未获取到匿名手机号需要跳转到应用自定义的登录页面
}).catch((error: BusinessError) => {
this.dealAllError(error);
})
} catch (error) {
this.dealAllError(error);
}
}
更多关于HarmonyOS 鸿蒙Next 华为一键登录时获取不到匿名手机号的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
针对HarmonyOS鸿蒙Next华为一键登录时获取不到匿名手机号的问题,以下是一些可能的解决方案:
-
检查权限申请:
- 确保已经正确申请了一键登录所需的敏感权限。
- 检查scope参数是否包含
quickLoginAnonymousPhone
,且该权限已生效。
-
确认账号状态:
- 使用的华为账号必须是中国大陆账号。
- 该华为账号必须已绑定手机号,否则无法获取匿名手机号。
-
服务器部署:
- 如果应用服务器需要获取华为账号绑定号码,服务器必须部署在中国大陆境内。
-
系统时间调整:
- 若调用接口仍未获取到手机号,尝试将调试设备系统时间向后调整24小时。
-
检查代码实现:
- 确保代码实现符合华为开发者文档中的规范,特别是关于一键登录和获取匿名手机号的部分。
如果以上步骤均无法解决问题,建议联系华为开发者官网客服以获取更专业的帮助。官网地址是:https://www.itying.com/category-93-b0.html。
更多关于HarmonyOS 鸿蒙Next 华为一键登录时获取不到匿名手机号的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html