【荣耀帐号服务】手把手教你快速 web 接入
一、业务描述
荣耀帐号开放服务基于 OAuth2.0,Web 应用可以获取用户授权凭证, 实现授权登录功能, 可以实现浏览器 Web 授权登录接入或者手机 H5 授权登录接入荣耀帐号。
二、业务流程
1) 用户在应用网站上选择荣耀帐号登录
2) 应用服务器构造 /oauth2/v3/authorize 链接, 向荣耀帐号服务器发起授权请求
3) 荣耀帐号返回登录授权页到浏览器
4) 用户登录并授权
5) 荣耀帐号服务器返回 302 重定向响应, 请求应用服务器, 并在 url 中拼上 code, 带给应用服务器
6) 应用服务器使用 Code 换 Access Token
7) 荣耀帐号服务器将 Access Token 返回给应用服务器
8) 应用服务器使用 Access Token 请求荣耀帐号服务器获取用户信息
9) 荣耀帐号服务器返回用户信息
10) 应用服务器返回登录成功展示登录信息
三、开发指导
1. 拉起荣耀帐号授权登录页
用户点击登录, 应用处理该点击事件, 构造 OAuth 授权 /oauth2/v3/authorize 请求链接, 该链接会重定向到登录页面.
html 示例如下(点击打开):
打开该 html 网页之后显示如下:
填入 client_id, redirect_uri, state 参数之后, 点击 "HONOR ID LOGIN" 按钮, 跳转如下链接, 即可拉起登录页面:
参数说明
2. 用户登录并授权
点击授权并登录之后, 会 302 重定向到地址 redirect_uri 并将 code 和 state 参数拼接到 url 中
3. code 换取 Access Token
第 2 节会将 code 参数回调至应用服务, 应用服务拿到 code 参数之后, 调用 /oauth2/v3/token 接口用 code 换取 Access Token, Refresh Token, id Token 等参数.
接口地址: https://hnoauth-login.cloud.hihonor.com/oauth2/v3/token
注意:
grant_type=authorization_code
接口调用文档参考: 服务端 API 接口 Code 换 Access Token
4. Access Token 获取用户信息
获取到 Access Token 之后, 可以通过 GOpen.User.getInfo 接口获取用户信息。
接口地址:https://account-drcn.platform.hihonorcloud.com/rest.php?nsp_fmt=JSON&nsp_svc=GOpen.User.getInfo
接口调用文档参考: 服务端 API 接口 Access Token 获取用户信息
5. Refresh Token 刷新 Access Token
Access Token 的有效期是 1 小时, 如果过期了, 还需要使用到的话, 那可以调用 /oauth2/v3/token 接口用 Refresh Token 换取 Access Token.
接口地址:https://hnoauth-login.cloud.hihonor.com/oauth2/v3/token
注意: grant_type=refresh_token
接口调用文档参考: 服务端 API 接口 Refresh Token 刷新 Access Token
6. 解析 Access Token
通过调用解析 Access Token 接口可以将 appid、open id、union_id、expire_in、scope 等参数解析出来,该功能可用于用户鉴权。
接口调用文档参考: 服务端 API 接口 解析 Access Token
7. 解析 Id Token (可选)
Id Token 是标准的 jwt token, Id Token 可以解出 appid, UnionId, displayname 和 头像等信息。该功能可以用于用户鉴权,简单用户信息获取。
解析 id Token 有两种方式,一是调用服务端接口解析(仅供调试使用),二是本地解析(推荐)。
接口调用文档参考:服务端 API 接口 ID Token 本地校验(推荐)
8. 取消授权(可选)
用户授权之后,可以通过调用取消授权接口,消除用户授权的 scope, 并且失效 Access Token 和 Refresh Token。该接口会取消用户的授权关系,下次用户再使用该应用时会再次需要用户授权。
Refresh Token 失效之后,使用 Refresh Token 换 Access Token 会返回 token revoked 错误:
接口地址:https://hnoauth-login.cloud.hihonor.com/oauth2/v3/revoke
接口调用文档参考:服务端 API 接口 取消用户授权
评论