一、开通华为登录认证服务

地址:AppGallery Connect(AGC)

//步骤
//1. 进入到项目设置页面中,并点击左侧菜单中的认证服务
//2.开启华为登录服务

开启华为账号登录服务:

Client ID和Client Secret获取方式:

开启华为账号服务

二、端侧使用华为登录

前提

TODO:添加环境依赖

//  entry目录下的oh-package.json5
//  路径  entry/oh-package.json5
//  添加依赖
"dependencies": {
    "@hw-agconnect/auth": "^1.0.5"
  }

TODO:开通网络权限

// 文件名:module.json5
// 路径:src/main/module.json5
  "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET" // 网络权限
      },
    ]

TODO:配置client_id

//  文件名 module.json5  
//  路径  entry/src/main/module.json5 
//配置client_id
    "metadata": [{
      "name": "client_id",
      "value": "项目应用的Client ID"
    }]

四、实现华为静默登录

1.封装华为静默登录方法

import auth from "@hw-agconnect/auth"

export class UserManager {
  async initUser() {
      // 步骤1:尝试获取当前已登录用户
      let user = await auth.getCurrentUser();
      // 步骤2:用户不存在时执行登录流程
      if (user === null) {
        // 调用认证服务进行华为账号登录
        await auth.signIn({
          autoCreateUser: true,       // 开启自动创建用户功能
          'credentialInfo': {         // 认证凭证配置
            'kind': 'hwid'            // 指定华为账号认证方式
          }
        });
        // 重新获取登录后的用户对象
        user = await auth.getCurrentUser()
      }
  }
}
export const userManager = new UserManager()  //导出单例

2.调用华为静默登录方法

//路径:entry/src/main/ets/entryability/EntryAbility.ets
/**
  *  原有代码省略
  */
onWindowStageCreate(windowStage: window.WindowStage): void {
    // Main window is created, set main page for this ability
    hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
    screenManager.init()
    windowStage.loadContent('pages/Index', (err) => {
      if (err.code) {
        hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err));
        return;
      }
      hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.');
      userManager.initUser()
    });
  }

注:只能在真机运行才可以,只有真机未登录华为账号时才会拉起华为登录,否则不会感到登录

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐