帐号是用户访问华为生态应用的凭证,拥有帐号的用户,可以使用华为终端云服务,如华为游戏中心、华为应用市场、华为视频、华为音乐等。
帐号登录基于OAuth 2.0协议标准和OpenID Connect协议,您的应用可以通过获取帐号用户身份认证信息(ID Token)或用户的临时授权票据(Authorization Code),使用户通过帐号安全登录您的应用。帐号支持Authorization Code和ID Token两种登录模式。您可根据实际情况选择其中一种模式实现。
Authorization Code模式:首次登录时,要求用户同意授权,当身份验证信息到期时,只需要从服务器端通过刷新令牌刷新访问令牌,从而更快,更可靠,更方便。Authorization Code模式仅适用于有自己服务器的应用。 ID Token模式:首次登录时,要求用户同意授权,当身份验证信息到期时,用户每次登录时都应同意授权。ID Token模式同时适用于单机应用和有自己服务器的应用。设备类型
OS版本
HMS Core(APK)版本
手机、平板、华为智慧屏、车机
EMUI 3.0及以上、Android 4.4及以上
4.0.0.300及以上
本章节主要介绍使用Authorization Code模式登录帐号的开发步骤。
整体流程:
用户选择帐号登录方式登录应用客户端。 应用客户端向帐号SDK发送请求,获取Authorization Code。 帐号SDK向帐号服务器发送请求,获取Authorization Code。 帐号SDK展示帐号服务器的用户登录授权界面,界面上会根据登录请求中携带的授权域(scopes)信息,显式告知用户需要授权的内容。 用户允许授权。 帐号服务器返回Authorization Code信息给帐号SDK。 帐号SDK返回Authorization Code信息给应用客户端。 应用客户端将获取到的Authorization Code信息发给应用服务器。 应用服务器向帐号服务器发送请求,获取Access Token、Refresh Token、ID Token信息。 帐号服务器返回Access Token、Refresh Token、ID Token信息。Authorization Code登录帐号功能涉及应用的关键开发步骤如下:
展示登录方式图标。使用华为帐号登录时,需要在登录时展示华为帐号的图片资源文件,具体请参见华为帐号登录管理细则。图标资源获取请参见获取图标资源。
若您的应用需要在AppGallery以外的HMS生态平台上架时,可以使用不同平台所对应的帐号来登录,此时需要通过调用getChannel接口获取对应帐号的图标资源。
调用AccountAuthParamsHelper.setAuthorizationCode方法请求授权。 调用AccountAuthManager.getService方法初始化AccountAuthService对象。 调用AccountAuthService.getSignInIntent方法并展示帐号登录授权页面。 登录授权完成后处理登录结果。 登录成功后应用服务器调用获取凭证Access Token的接口向帐号服务器请求获取ID Token、Access Token、Refresh Token。请求参数
参数名
描述
grant_type
OAuth 2.0规范定义的字段,该值固定填“authorization_code”。
code
获取的授权码Authorization Code。
client_id
应用中OAuth 2.0客户端ID(凭据)的Client ID,在创建应用后由华为开发者联盟为应用分配的唯一标识。Client ID的查询方法请参见查看应用。
client_secret
应用中OAuth 2.0客户端ID(凭据)的Client Secret,在创建应用后由华为开发者联盟为应用分配公钥。Client Secret查询方法请参见查看应用。
redirect_uri
AppGallery Connect中设置的回调地址,用于应用服务器在获取用户授权后接收Authorization Code和获取凭证Access Token。
请求示例
响应参数
参数名
描述
access_token
用户的Access Token。
refresh_token
如果应用申请帐号服务时,入参中包含access_type=offline,则会返回此参数,该参数用于刷新Access Token。
expires_in
Access Token的过期时间,以秒为单位。60分钟过期。
id_token
如果应用申请帐号服务时,入参scope中包含OpenID,则会返回此参数(JWT格式数据),包含用户基本帐号、用户邮箱等信息。ID Token的描述信息请参见ID Token验证接口中ID Token描述。
scope
生成的凭证Access Token中包含的scope。
token_type
固定返回Bearer,标识返回Access Token的类型。
由于Access Token的有效期(目前是60分钟)较短,当Access Token失效或者即将失效时,可以使用Refresh Token(有效期180天)通过获取凭证Access Token向帐号服务器请求获取新的Access Token。说明
当Access Token失效时,若您不使用Refresh Token向帐号服务器请求获取新的Access Token,帐号的授权信息将会失效,导致使用Access Token的功能都会失败。 当Access Token非正常失效(如修改密码,退出帐号,删除设备)时,业务可通过调用退出帐号接口后再调用静默登录接口获取新的Access Token。请求示例
响应示例
本章节主要介绍使用ID Token模式登录帐号的开发步骤。
整体流程:
用户选择帐号登录方式登录应用客户端。 应用客户端调用setIdToken请求授权。 帐号SDK向应用客户端返回响应。 应用客户端调用AccountAuthManager.getService方法初始化AccountAuthService对象。 应用客户端获取到AccountAuthService对象。 应用客户端调用getSignInIntent获取登录页面。 帐号SDK向应用客户端返回登录页面的Intent对象。 应用客户端通过startActivityForResult方法跳转到登录页面。 帐号SDK检查帐号登录情况。 帐号SDK展示帐号登录页面。 用户输入帐号信息。 帐号服务器检查帐号授权情况。 帐号服务器向帐号SDK返回授权结果。 帐号SDK展示授权登录页面。 用户确认授权。 帐号SDK将授权登录结果返回到应用的onActivityResult方法中。 应用客户端调用parseAuthResultFromIntent获取AuthAccount对象。 应用客户端获取到ID Token后,去帐号服务器验证ID Token有效性。ID Token登录帐号功能涉及应用的关键开发步骤如下:
展示登录方式图标。使用华为帐号登录时,需要在登录时展示华为帐号的图片资源文件,具体请参见华为帐号登录管理细则。图标资源获取请参见获取图标资源。
若您的应用需要在AppGallery以外的HMS生态平台上架时,可以使用不同平台所对应的帐号来登录,此时需要通过调用getChannel接口获取对应帐号的图标资源。
调用AccountAuthParamsHelper.setIdToken方法请求授权。 调用AccountAuthManager.getService方法初始化AccountAuthService对象。 调用AccountAuthService.getSignInIntent方法并展示帐号登录授权页面。 登录授权完成后在页面的onActivityResult中调用AccountAuthManager.parseAuthResultFromIntent方法从登录结果中获取帐号信息。登录成功后,应用可根据authAccount.getAccountFlag的结果判断当前登录帐号的渠道类型。说明
authAccount.getAccountFlag返回当前登录帐号的渠道类型。
0:代表华为帐号,调用服务端接口请用此URL:https://oauth-login.cloud.huawei.com/xxx。 1:代表AppTouch帐号,调用服务端接口请用此URL:https://oauth-login-at.cloud.huawei.com/xxx。方式一:应用服务器验证(推荐)
步骤请参见应用服务器的ID Token验证签名。
方式二:本地验证
从https://oauth-login.cloud.huawei.com/.well-known/openid-configuration的响应消息体中获取jwks_uri的属性值,该属性值为公钥URI,调用该URI,在响应消息体中获取keys的属性值,并根据keys的属性值生成公钥。 验证签名。ID Token是JWT格式的,验证ID Token的签名可以采用通用的JWT库,例如jwt.io。说明
JWT仅支持Android 9.0及以上版本使用。
验证ID Token中iss字段的值是否等于“https://accounts.huawei.com”。 验证ID Token中aud字段的值等于应用的client_id。 验证ID Token中的过期时间(exp字段)是否已过期。如果以上验证均通过,则表示用户ID Token验证通过,应用可使用登录结果中的用户信息。
方式三:华为服务器验证
应用调用验证ID Token有效性的接口向帐号服务器发送ID Token验证请求,帐号服务器向应用直接返回验证结果。
说明
由于调用验证ID Token有效性的接口会带来耗时,并且受网络状况的影响,所以服务器验证方式只能用于调试目的,在商用环境需要采用应用服务器验证的方式。
请求示例
响应示例
相关知识
登录帐号
管理您的华为帐号设备列表
王者荣耀怎么解封号 帐号被健康系统封号解封
怎么申请阿里邮箱注册帐号呢
我的健康吗已注册有近一月了,现在重新登录但忘了密码和帐号该咋办呢?
39健康帐号注销协议(39健康快应用)v2.0
怎样注销运动健康账号 华为运动健康能切换帐号吗?
北京健康宝怎么登录
湖南自主申报登录指引
华为运动健康APP下载、安装及注册、登录指南
网址: 登录帐号 https://m.trfsz.com/newsview1389015.html