美文网首页Harmony OS
Fa应用获取华为账户授权登录-鸿蒙(HarmonyOS)

Fa应用获取华为账户授权登录-鸿蒙(HarmonyOS)

作者: 91Shan | 来源:发表于2021-06-22 10:36 被阅读0次

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)); 
        }); 
    }); 
},

运行结果⬇️⬇️⬇️⬇️⬇️


1624329507913.jpg

注:具体的效果可以试一试,详细的问题也可以留言找我

相关文章

网友评论

    本文标题:Fa应用获取华为账户授权登录-鸿蒙(HarmonyOS)

    本文链接:https://www.haomeiwen.com/subject/jpceeltx.html