HarmonyOS 怎么获取华为账号绑定的手机号

怎么获取华为账号绑定的手机号?参考https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/account-phone-unionid-login-V5,使用以下源码可以获取到UnionID、OpenID但是无法获取手机号。

import ArkUI from 'arkui';

@Entry
@Component
struct MyComponent {
  @State listItems: ListView.Item[] = [];

  build(private authDebug() {
  // 创建授权请求,并设置参数。
  let authRequest = new authentication.HuaweiIDProvider().createAuthorizationWithHuaweiIDRequest();
  // 获取匿名手机号需传quickLoginAnonymousPhone这个scope,传参之前需要先申请“华为账号一键登录”权限
  //(权限名称为:quickLoginMobilePhone),后续才能获取匿名手机号数据;
  // 获取UnionID、OpenID需传openid这个scope,这个scope不需要申请权限。
  authRequest.scopes = ['quickLoginAnonymousPhone','openid'];
  // 用于防跨站点请求伪造。
  authRequest.state = util.generateRandomUUID();
  // 一键登录场景该参数只能设置为false。
  authRequest.forceAuthorization = false;
  let controller = new authentication.AuthenticationController();
  try {
    controller.executeRequest(authRequest).then((response: authentication.AuthorizationWithHuaweiIDResponse) => {
      // 获取到UnionID、OpenID、匿名手机号
      let unionID = response.data?.unionID;
      let openID = response.data?.openID;
      let anonymousPhone = response.data?.extraInfo?.quickLoginAnonymousPhone;
      hilog.info(0x0000, 'testTag', 'unionID:' + unionID + ' openID:' + openID + ' anonymousPhone:' + anonymousPhone);
      if (anonymousPhone) {
        hilog.info(0x0000, 'testTag', 'Succeeded in authentication');
        // 将匿名手机号传给第3步使用
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in authentication. AnonymousPhone is empty');
      // 未获取到匿名手机号需要跳转到应用自定义的登录页面。
    }).catch((error: BusinessError) => {
      this.dealAllError(error);
    })
  } catch (error) {
    this.dealAllError(error);
  }
}

  // 错误处理
  private dealAllError(error: BusinessError): void {
    hilog.error(0x0000, 'testTag', `Failed to auth. Code: ${error.code}, message: ${error.message}`);
  }) {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      ListView({
        itemCount: this.listItems.length,
        scrollToIndex: 3, // 假设你想跳转到第四个ListItem,索引从0开始
        renderItem: (item: ListView.Item) => {
          ListItem({
            onSelected: () => {
              // 处理点击事件
            }
          }) {
            Text(item.title)
          }
        }
      })
        .height(200)
        .width('100%')
        .margin(20)
        .onListViewReady((listView) => {
          for (let i = 0; i < 10; i++) {
            this.listItems.push({ title: 'Item ' + (i + 1), index: i });
          }
        })
    }
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
HarmonyOS
2024-12-25 11:33:56
1238浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
shlp

华为账号一键登录 需要先申请“华为账号一键登录”Scope权限。https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/account-config-permissions-V5#section132012717318

分享
微博
QQ
微信
回复
2024-12-25 13:21:49


相关问题
华为账号登录获取不到手机号
1425浏览 • 1回复 待解决
如何获取华为手机号
345浏览 • 0回复 待解决
HarmonyOS 如何获取手机号
715浏览 • 1回复 待解决
验证手机号是否已被注册/绑定功能?
4840浏览 • 1回复 待解决
HarmonyOS 获取不到手机号
1144浏览 • 1回复 待解决
鸿蒙OS如何获取当前手机号
26063浏览 • 1回复 待解决
HarmonyOS 手机号快速验证
903浏览 • 1回复 待解决
HarmonyOS 如何一键获取本机手机号
865浏览 • 1回复 待解决
快速验证手机号Button实现
1310浏览 • 1回复 待解决
实时验证手机号Button实现
1137浏览 • 1回复 待解决
PersistentStorage实现手机号登录匹配
1644浏览 • 1回复 待解决
HarmonyOS 手机号一键登录功能
715浏览 • 1回复 待解决
HarmonyOS 输入框关于手机号空格问题
1017浏览 • 1回复 待解决