1、在 AGC 网站创建应用&开启“Account Kit”
a、提前在开发者联盟注册账号,并完成个人实名认证/企业账号认证;
① 进入开放平台
② 联系华为工作人员,根据对接的接口人指导完成“凭证”菜单的开放
b、在 AGC 网址创建应用,由于当前鸿蒙应用暂未支持手机设备,先以“Andrioid”
类型申请
③ 再次进入开放平台
④ 点击“凭证”菜单
⑤ 点击“创建凭证”,选择创建“OAuth 2.0 客户端 ID”
⑥ 使用 keytool 工具,通过工程中.p12签名文件,获取SHA256证书指纹
⑦ 点击创建好的凭证,编辑,将SHA256证书指纹录入(注意应用包名要跟工程统一)
c、进入“我的项目”的“API 管理”页面,选中开启“Account Kit”
d、安装 npm 包:hms-js-account
npm install @hmscore/hms-js-account
//- 安装完成后,可以看到工程 entry/node_modules 目录下,已自动导入 hms-js�account;
e、加载 hms har 包,将 har 包《jsb-ohos-adapter-debug.har》放置到 entry/libs 下
f、修改 build.gradle,修改 entry 下的 build.gradle 文件,在 dependencies 中增加'*.har'
【↑↑↑注:这个包是鸿蒙方提供的,当然也可以给我留言我给提供↑↑↑】
g、 修改 config.json 文件
1、在 deviceConfig/default 中增加配置:"allowComponentsProxy": true
"deviceConfig": {
"default": {
"allowComponentsProxy": true
}
}
2、在 module 中增加 metaData/customizeData,配置如下内容
"metaData": {
"customizeData": [
{
"name": "com.huawei.hms.client.appid",
"value": "88888888" //- 前面第⑤步生成的签名的appid
}
]
}
h、修改 MainAbility 文件
修改 MainAbility 文件,覆写 onStart 和 onStop 方法,注册 hms 服务,具体如下
(若 IDE 提示找不到 HmsBridge 类,可重启 IDE 再尝试)
package com.huawei.ohosdemo;
import com.huawei.hms.jsb.adapter.har.bridge.HmsBridge;
import ohos.aafwk.content.Intent;
import ohos.ace.ability.AceAbility;
public class MainAbility extends AceAbility {
private HmsBridge mHmsBridge;
@Override
public void onStart(Intent intent) {
// 使用弹窗模态启动当前 Ability
intent.setParam("window_modal", 3);
// 注册账号授权服务
mHmsBridge = HmsBridge.getInstance();
mHmsBridge.initBridge(this);
super.onStart(intent);
}
@Override
public void onStop() {
//注销账户服务
mHmsBridge.destoryBridge();
super.onStop();
} }
i、JS 文件(对应着MainAbility文件的page)
文件导入
import { HuaweiIdAuthParamsHelper, HuaweiIdAuthManager, OPENID, PROFILE, GAMES } from '@hmscore/hms-js-account'
登录示例
signIn: function () {
console.info("signIn start");
var signInOption = new HuaweiIdAuthParamsHelper().setId().setProfile().setMobileNumber().setA uthorizationCode().build();
console.info("signIn signInOption:" + JSON.stringify(signInOption));
HuaweiIdAuthManager.getAuthApi().getSignInIntent(signInOption).then((result)=>{
console.info("signIn success:" + JSON.stringify(result));
//- 此处获取到 auth_code 应将其传给三方云,三方云调用华为接口通过auth_code 获取 at/rt/unionId,手机号
//- 然后使用 unionId,手机号 完成账号绑定逻辑,再将结果返回 fa
//- 授权绑定过程结束,进入下一个流程
this.signOuting = false;
prompt.showToast({message:"授权登录成功"}) }).catch((error)=>{
console.error("signIn fail : " + JSON.stringify(error));
this.signing = false;
});
},
登出示例
signOut: function () {
HuaweiIdAuthManager.getAuthApi().signOut().then((result)=>{
console.info("signOut success:" + JSON.stringify(result));
this.signing = false;
prompt.showToast({message:"退出账号成功"})
}).catch((error) => {
console.error("signout fail" + JSON.stringify(error));
this.signOuting = false;
});
},
静默检查登录授权
silentSignIn: function () {
console.info("silentSignIn start");
var signInOption = new HuaweiIdAuthParamsHelper().setId().setProfile().setAuthorizationCode().build();
console.info(JSON.stringify(signInOption));
HuaweiIdAuthManager.getAuthApi().silentSignIn(signInOption).then((result) => {
console.info("silentSignIn success : " + JSON.stringify(result));
prompt.showToast({message:"静默授权登录成功"}) }).catch((error) => {
console.error("silentSignIn fail : " + JSON.stringify(error));
});
});
},
运行结果⬇️⬇️⬇️⬇️⬇️
注:具体的效果可以试一试,详细的问题也可以留言找我