在调用接口页面的<script>部分增加如下配置。
import account from '@service.account'
或
var account = require("@service.account") | 接口 | 描述 |
|---|---|
| 获取服务提供商,如厂商的英文品牌名称。 | |
| 进行OAuth授权。 | |
| 获得用户基本信息。 | |
| 该接口用于校验应用是否有通过authorize接口完成过登录授权,及应用登录后,账号是否有退出登录的场景。 | |
| 检查HMS的华为账号是否已经登录。车机设备上不支持。 | |
| 当account.authorize获取的accessToken在调用account.getProfile时返回失效(错误码102),可调用此接口清除缓存,然后再次调用account.authorize获取新的accessToken。仅在车机上适用。 |
描述
获取服务提供商,如厂商的英文品牌名称。
返回值
字符串,服务提供商的代号,如果无此服务则返回空字符串。返回空字符串时,请勿调用该服务其他接口,否则将抛出异常。
示例代码
account.getProvider();
描述
进行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。
|
| 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 });
}
}) 描述
获得用户基本信息。
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);
}
}) 描述
该接口用于校验应用是否有通过authorize接口完成过登录授权,及应用登录后,账号是否有退出登录的场景。在如下情况下,调用此接口将校验无效:
如果希望您的应用和华为账号保持同进同出的状态,在code模式下,建议先调用account.checkUserSession,如果校验无效,再调用account.authorize进行授权。
在token模式下,无需调用account.checkUserSession进行校验。
OBJECT参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| success | function | 否 | 成功回调,表示有效。 |
| fail | function | 否 | 失败回调,表示无效。 |
示例代码
account.checkUserSession({
success: function (data2) {
// 有效
},
fail: function (data, code) {
// 无效
}
}); 描述
该接口用于检查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}`);
}
}) 描述
当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}`);
}
})