目录

账号

  • 使用此接口前,请先完成申请账号MCP权限。
  • 该功能依赖 HUAWEI Account SDK 提供服务,HUAWEI Account SDK 可能会收集用户的个人数据。请在快应用中使用该功能之前,告知用户将搜集个人数据,并引导用户阅读相应的隐私政策。

本文档仅介绍接口的定义,接口详细的使用顺序和场景,请参见“接入账号服务”。

接口声明

在manifest.json文件的 features属性中增加如下配置。

{"name": "service.account"}

导入模块

在调用接口页面的<script>部分增加如下配置。

import account from '@service.account'

或

var account = require("@service.account")

使用限制

限制条件

说明

适用终端

手机、平板、智慧屏、车机

适用区域

全球

接口定义

接口

描述

account.getProvider(OBJECT)

获取服务提供商,如厂商的英文品牌名称。

account.authorize(OBJECT)

进行OAuth授权。

account.getProfile(OBJECT)

获得用户基本信息。

account.checkUserSession(OBJECT)

该接口用于校验应用是否有通过authorize接口完成过登录授权,及应用登录后,账号是否有退出登录的场景。

account.isLogin(OBJECT)

检查HMS的华为账号是否已经登录。车机设备上不支持。

account.signOut(OBJECT)

当account.authorize获取的accessToken在调用account.getProfile时返回失效(错误码102),可调用此接口清除缓存,然后再次调用account.authorize获取新的accessToken。仅在车机上适用。

[h2]account.getProvider(OBJECT)

描述

获取服务提供商,如厂商的英文品牌名称。

返回值

字符串,服务提供商的代号,如果无此服务则返回空字符串。返回空字符串时,请勿调用该服务其他接口,否则将抛出异常。

示例代码

account.getProvider();

[h2]account.authorize(OBJECT)

描述

进行OAuth授权。

OBJECT参数

参数

类型

是否必填

说明

appid

string

是

非厂商规范,在华为开发者联盟上创建快应用后分配的唯一标识。获取方式请参见“创建快应用”中的“获取APP ID”章节。

type

string

是

token:简化模式

code:授权码模式

redirectUri

uri

否

重定向URI。

scope

string

是

申请的权限范围,支持配置以下scope:

经用户授权,获取用户基本信息,必须配置为“scope.baseProfile”。

1108版本开始,支持免用户授权,仅申请OpenID或UnionID,必须配置为“scope.baseId”。

forceLogin(1079+)

string

否

未登录华为账号或者鉴权失败时,是否主动拉起账号登录页面。

缺省值为1。

  • 0:未登录华为账号或者鉴权失败时,不主动拉起账号登录页面。
  • 1:未登录华为账号或者鉴权失败时,主动拉起账号登录页面。

state

string

否

可以指定任意值,认证服务器会原封不动地返回这个值。

success

function

否

成功回调。

fail

function

否

失败回调。

complete

function

否

执行结束后的回调。

success返回值:

参数名

类型

说明

state

string

请求时同字段指定的任意值。

code

string

授权码模式下可用,返回的授权码。

accessToken

string

简化模式下可用,返回的访问令牌。

tokenType

string

简化模式下可用,访问令牌类型。通过此令牌开发者可以调用getProfile接口获取OpenID和用户基本信息。

expiresIn

number

简化模式下可用,访问令牌过期时间,单位为秒,如果通过其他方式设置,则此处可能为空。

scope

string

简化模式下可用,实际权限范围,如果与申请一致,则此处可能为空。

openid(1020+)

string

简化模式下可用,用户的openid。

unionid(1020+)

string

简化模式下可用,用户在开放平台上的唯一标示符,本字段在满足一定条件下才会返回(在华为开发者联盟申请账号服务时,勾选“启用UnionId”)。

nickname(1020+)

string

简化模式下可用,用户的昵称,可能为空。

avatar(1020+)

object

简化模式下可用,用户的头像图片地址,可能为空。按照分辨率组织,当只有一个分辨率时,可以使用default对应的图片地址。

email(1060+)

string

简化模式下可用,用户绑定的Email地址。如果未绑定Email,此处可能为空。

fail返回错误码:

错误码

说明

201

用户拒绝,获取账号权限失败。

示例代码

简化模式

account.authorize({
    appid: "101373095",
    type: "token",
    state: "feedbeef",
    scope: "scope.baseProfile",
    success: function (data) {
        console.log("signInByBaseScope Authorize base profile success.");
        var accessToken = data.accessToken;
        console.log("signInByBaseScope Authorize base profile success data=" + JSON.stringify(data));
    },
    fail: function (data, code) {
        console.log("signInByBaseScope Authorize base profile fail, code=" + code);
        prompt.showToast({ message: data + "fail code: " + code })
    }
});

授权码模式

account.authorize({
  appid: "101373095",
  type: "code",
  state: 5,
  scope: "scope.baseProfile",
  redirectUri: "https://www.example.com/",
  success: function (ret) {
    var atcode = ret.code;
    console.log("signInByBaseScope Authorize base profile success data=" + JSON.stringify(ret));
  },
  fail: function (erromsg, errocode) {
    prompt.showToast({ message: 'authorize fail --- ' + errocode + ':' + erromsg });
  }
})

[h2]account.getProfile(OBJECT)

描述

获得用户基本信息。

OBJECT参数

参数

类型

是否必填

说明

appid

string

否

非厂商规范,在华为开发者联盟上创建快应用后分配的唯一标识。获取方式请参见“创建快应用”中的“获取APP ID”章节。

token

string

是

访问令牌。调用account.authorize获取的accessToken。

success

function

否

成功回调。

fail

function

否

失败回调。

complete

function

否

执行结束后的回调。

success返回值:

参数名

类型

说明

openid

string

用户的openid。

id

string

华为不返回此字段,其他厂商可能会返回。

unionid

string

用户在开放平台上的唯一标示符,本字段在满足一定条件下才会返回(在华为开发者联盟申请账号服务时,勾选“启用UnionId”)。

nickname

string

用户的昵称,可能为空。

avatar

object

用户的头像图片地址,可能为空。按照分辨率组织,当只有一个分辨率时,可以使用default对应的图片地址。

fail返回错误码:

错误码

说明

102

session无效。

unionid机制说明:

如果开发者拥有多个移动应用,可通过unionid来区分用户的唯一性,因为只要是同一个开放平台账号下的移动应用,用户的unionid是唯一的。换句话说,同一用户,对同一个开放平台下的不同应用,unionid是相同的。

示例代码

account.getProfile({
 appid: "101373095",
    token: this.accessToken,       //使用实际的accessToken值
    success: function (data) {
        console.log('getProfile handling success: ' + JSON.stringify(data));
    },
    fail: function (data, code) {
        console.log('getProfile handling fail, code =' + code);
    }
})

[h2]account.checkUserSession(OBJECT)(1020+)

描述

该接口用于校验应用是否有通过authorize接口完成过登录授权,及应用登录后,账号是否有退出登录的场景。在如下情况下,调用此接口将校验无效:

如果希望您的应用和华为账号保持同进同出的状态,在code模式下,建议先调用account.checkUserSession,如果校验无效,再调用account.authorize进行授权。

在token模式下,无需调用account.checkUserSession进行校验。

OBJECT参数

参数

类型

是否必填

说明

success

function

否

成功回调,表示有效。

fail

function

否

失败回调,表示无效。

示例代码

account.checkUserSession({
    success: function (data2) {
        // 有效
    },
    fail: function (data, code) {
        // 无效
    }
});

[h2]account.isLogin(OBJECT)(1050+)

描述

该接口用于检查HMS的华为账号是否已经登录。车机设备上不支持。

OBJECT参数

参数

类型

是否必填

说明

success

function

否

成功回调,表示有效。

fail

function

否

失败回调,表示无效。

success返回值:

参数名

类型

说明

isLogin

boolean

登录状态值。true表示已登录,false未登录。

fail返回错误码:

错误码

说明

200

通用参数错误。

示例代码

account.isLogin({
    success:function(data){
        console.log("handling success,  data.isLogin= " + data.isLogin);
    },
    fail: function(data, code) {
        console.log(`handling fail, code = ${code}`);
    }
})

[h2]account.signOut(OBJECT)

描述

当account.authorize获取的accessToken在调用account.getProfile时返回失效(错误码102),可调用此接口清除缓存,然后再次调用account.authorize获取新的accessToken。仅在车机上适用。

OBJECT参数

参数

类型

是否必填

说明

appid

string

是

开发者在华为开发者联盟上创建应用后获取的APP ID。

success

function

否

成功回调。

fail

function

否

失败回调。

fail返回错误码:

错误码

说明

200

通用错误。

202

参数错误。

示例代码

account.signOut({
    appid: "123456",
    success:function(data){
        console.log("handling success");
    },
    fail: function(data, code) {
        console.log(`handling fail, code = ${code}`);
    }
})

版本更新说明

版本

发布日期

描述

1108

2023-12-06

接口account.authorize的scope参数配置新增scope.baseId。

1050

2019-09-20

新增account.isLogin,可检查HMS Core的华为账号是否已经登录。

1020

2018-06-20

  • account.authorize 新增 openid, unionid, nickname, avatar 4个返回值。
  • 新增account.checkUserSession 接口,用于判断用户登录状态是否有效。

相关链接

[h2]FAQ

调用account.getProfile返回错误码6200,如何处理?