【荣耀帐号服务】手把手教你快速web接入

这篇具有很好参考价值的文章主要介绍了【荣耀帐号服务】手把手教你快速web接入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、业务描述

荣耀帐号开放服务基于OAuth2.0,Web应用可以获取用户授权凭证, 实现授权登录功能, 可以实现浏览器Web授权登录接入或者手机H5授权登录接入荣耀帐号。

二、业务流程

https//cloud.hihonor.com/appeal,前端,服务器,java,web,android

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>
  <head>
    <title>HONOR ID Demo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style>
      .a {
        width: 300px;
        height: 30px;
        margin-top:2px;
      }
      #b {
        width: 420px;
        text-align: right;
      }
    </style>
  </head>

  <body>
    <div id="b">
      <form action="https://hnoauth-login.cloud.hihonor.com/oauth2/v3/authorize" method="get">
        <div>
          <label>client_id: </label>
          <input class="a" name="client_id" placeholder="appid" />
        </div>
        <div>
          <label>redirect_uri: </label>
          <input class="a" name="redirect_uri" placeholder="应用的回调地址" />
        </div>
        <div>
          <label>scope: </label>
          <input class="a" name="scope" value="openid profile" />
        </div>
        <div>
          <label>response_type: </label>
          <input class="a" name="response_type" value="code" />
        </div>
        <div>
          <label>access_type: </label>
          <input class="a" name="access_type" value="offline" />
        </div>
        <div>
          <label>state: </label>
          <input class="a" name="state" value="state-value" />
        </div>
        <p><button>HONOR ID LOGIN</button></p>
      </form>
    </div>
  </body>
</html>

打开该html网页之后显示如下:

https//cloud.hihonor.com/appeal,前端,服务器,java,web,android

填入client_id, redirect_uri, state 参数之后, 点击 "HONOR ID LOGIN" 按钮, 跳转如下链接, 即可拉起登录页面:

https://hnoauth-login.cloud.hihonor.com/oauth2/v3/authorize?
client_id=[appid]
&redirect_uri=[回调地址]
&scope=openid+profile
&response_type=code
&access_type=offline
&state=state-value

参数说明

参数名称 是否必选 参数说明
response_type 授权码模式, 为固定值: code
client_id 在 开发准备 中创建的服务器应用的AppId
redirect_uri 用户登录授权之后, 会带上code参数302重定向该回调地址。回调地址必须和开发者服务平台设置的回调地址一致。回调地址可以添加多个。 回调地址后面可以添加参数, 如: https://www.demo.com/url?params=value
scope 申请权限字符串数组,以空格分隔并做 urlEncode(URL编码后空格变为加号+),必须包含字符串“openid”。
access_type

枚举值,确定响应是否包含Refresh Token,Refresh Token用于刷新Access Token。

为offline时,返回响应包含Refresh Token。

为online或不传该值时,返回响应不包含Refresh Token。

state 随机串,用于防CSRF,在返回授权码code时原封不动返回。 校验规则:^[0-9a-zA-Z:/.-_]+$
nonce 防重放攻击,是一个随机值。在生成的id_token中原封不动保留nonce值。 校验规则:^[0-9a-zA-Z:/.-_]{1,1024}$
display 填写 page 或 wap,默认为 page

2. 用户登录并授权

点击授权并登录之后, 会302重定向到地址 redirect_uri 并将 code和 state 参数拼接到 url 中

https://www.demo.com
?code=DQB6e3x9asNPjdN6%2Bw4%2FhzDJN%2Be3dnC3qKnLbUAhqqLQZMmak%2BWF%2F0mwEWlWTRUWyqxzUtvXn%2BBH1Twro7Tip3PiweRTldC9iFU%3D
&state=state-value

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等参数解析出来,该功能可用于用户鉴权。

接口地址:https://hnoauth-login.cloud.hihonor.com/rest.php?nsp_fmt=JSON&nsp_svc=hihonor.oauth2.user.getTokenInfo

接口调用文档参考: 服务端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 错误:

{
    "sub_error": 31204,
    "error_description": "token revoked",
    "error": 1203
}

接口地址:https://hnoauth-login.cloud.hihonor.com/oauth2/v3/revoke

接口调用文档参考:服务端API接口 取消用户授权文章来源地址https://www.toymoban.com/news/detail-686493.html

到了这里,关于【荣耀帐号服务】手把手教你快速web接入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手把手教你如何0基础编写基于AI机器视觉的--王者荣耀百里守约的自瞄程序,我家村头的傻X都能学会的教程!

    不介绍上面的框架了,直入主题: 先安装Anaconda,这是python环境的切换神器! 此处借用Anaconda安装教程 好 现在你安好了。打开cmd,直接输入conda看下是否有命令输出。如果没有,那就是path系统变量你没添加Anaconda。或者你在开始菜单,找到并打开anaconda Prompt (Anaconda3),可以看

    2024年02月14日
    浏览(69)
  • 手机怎么扫描照片成电子版?手把手教你快速搞定

    手机怎么把照片给扫描成电子版呢?大家在办公的过程中,经常会使用或者是收到纸质版的文件或合同,正常情况下使用当然是没问题,但当我们在外身边没有电脑,而这时需要把手头上的纸质版文件给转换成电子版给客户发过去,这时候怎么办呢?其实我们只需要利用好自

    2024年02月13日
    浏览(50)
  • web分析-手把手教你怎么写小程序事件分析

    概述 小程序提供了自定义埋点方法,需要在业务代码中新增对应的代码。 区别于小程序已有的页面、用户等埋点,web分析中的自定义的方法往往与业务场景相关。 本文会按步骤详细介绍小程序的事件、事件分析、漏斗分析的创建流程。 该事件主要用于记录用户进入首页之后

    2024年02月10日
    浏览(45)
  • SDXL 1.0出图效果直逼Midjourney!手把手教你快速体验!

    最近,Stability AI正式推出了全新的SDXL 1.0版本。经过我的实际测试,与之前的1.5版本相比,XL的效果有了巨大的提升,可以说是全方位的超越。不仅在理解提示词方面表现出色,而且图片的构图、颜色渲染和画面细腻程度都有了很大的进步,实际出图效果堪比Midjourney。此外,

    2024年02月14日
    浏览(56)
  • 手把手教你如何快速定位bug,如何编写测试用例,快来观摩......

    手把手教你如何快速定位bug,如何编写测试用例,快来观摩......手把手教你如何快速定位bug,如何编写测试用例,快来观摩......作为一名测试人员如果连常见的系统问题都不知道如何分析,频繁将前端人员问题指派给后端人员,后端人员问题指派给前端人员,那么在团队里你在开发

    2024年01月20日
    浏览(57)
  • 手把手教你,本地RabbitMQ服务搭建(windows)

    前面已经对RabbitMQ介绍了很多内容,今天主要是和大家搭建一个可用的RabbitMQ服务端,方便后续进一步实操与细节分析 跟我们跑java项目,要装jdk类似。rabbitMQ是基于Erlang开发的,因此安装rabbitMQ服务器之前,需要先安装Erlang环境。 【PS: 我已经上传了对应资源,windows可直接下载

    2024年02月14日
    浏览(51)
  • 快速上手WebGL,代码+图解手把手教你使用WebGL一步步实现热力图

    大家好,我是南木元元,热衷分享有趣实用的文章。 项目中需要绘制热力图,热力图其实就是数值大小用颜色来进行区分,每个点的数值需根据颜色映射表(调色板)映射为指定颜色。需要3个数值字段,可绘制在平行坐标系中(2个数值字段分别确定x、y轴,1个数值字段确定

    2024年01月18日
    浏览(55)
  • 手把手教你搭建一个Minecraft 服务器

    这次,我们教大家如何搭建一个我的世界服务器 首先,我们来到这个网站 MCVersions.net - Minecraft Versions Download List MCVersions.net offers an archive of Minecraft Client and Server jars to download, for both current and old releases! https://mcversions.net/   在这里,我们点击对应的版本,从左到右依次是稳定版

    2024年02月09日
    浏览(58)
  • 手把手教你将项目部署到服务器!

    一、导入centos7虚拟机: 打开VMWare,点击“打开虚拟机”,选择centos7.ova之后,选择存储路径: 点击导入: 选择“不再显示此消息”,点击“重试”按钮: 点击“编辑虚拟机设置”,修改处理器、内存、硬盘等信息后,启动 按Ctrl+Alt键可以切换到windows下。 启动成功后,输入

    2023年04月20日
    浏览(57)
  • 手把手教你使用phpstudy本地快速搭建网站,并外网访问【无公网IP】

    本教程为快速在本地环境下搭建web网站,同时实现可在外网环境下访问!! 使用工具 phpstudy(本地搭建web网站) cpolar内网穿透(将网站发布到公网可访问) 1. 本地搭建web网站 1.1 下载phpstudy后解压并安装 官网下载:https://www.xp.cn/download.html 安装后的效果,如图: 点击,一键

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包