Web应用怎样获取Access Token?

news/2025/3/31 22:56:58/

1.在联盟创建服务器应用

参考文档:开发准备

2.获取用户级Access Token

2.1 获取code

参考文档:接入华为帐号获取凭证

2.1.1 先按照跳转链接进行配置url

https://oauth-login.cloud.huawei.com/oauth2/v3/authorize?
response_type=code&
access_type=offline&
state=state_parameter_passthrough_value&
client_id=APP ID&
redirect_uri=应用的回调地址&
scope=openid+profile

接口的描述和参数如下表所示:

示例:创建测试的App

传入url: https://oauth-login.cloud.huawei.com/oauth2/v3/authorize?response_type=code&access_type=offline&client_id=107408391&scope=openid+profile&redirect_uri=https://www.thirdwebdemo.com/redirect_url

2.1.2 用户登录并授权

当请求跳转到OAuth服务,OAuth服务会引导用户进行授权,弹出授权页面给用户,显示应用的名称和图标以及该应用所申请授权的scope权限列表,输入华为帐号及密码完成登录授权。

2.1.3 OAuth服务将响应值通过回调地址redirect_uri回调给应用。

如果用户同意授权,则回调请求中带有授权码code。

https://www.thirdwebdemo.com/redirect_url?
code=<返回的授权码code>

如果用户不同意授权,则回调请求中包含错误消息。

https://www.thirdwebdemo.com/redirect_url #error=1107&error_description=access+denied

2.2 通过code获取Access Token

参考文档:获取凭证Access Token

Authorization Code只有5分钟有效期,并且用完一次就会失效,请重新由用户授权,生成Authorization Code。

2.2.1 接口说明

2.2.2 直接通过code获取access_token、refresh_token

备注:通过2.1.3获取的code需要UrlDecode后再使用

Postman请求示例:

请求示例:

POST /oauth2/v3/token HTTP/1.1
Host: oauth-login.cloud.huawei.com
Cache-Control: no-cache
Postman-Token: 923683a5-7379-03f5-b83f-072ba217fc65
Content-Type: application/x-www-form-urlencodedgrant_type=authorization_code&code=DwEEABlWuXdOMrHWphJ7ixKxqkMiTfdoFX11KIcY0CP8gL2Qq5b5MNZpGtPWHKK5KBHm6u6KDP1BXq8JRunU4xIz4DV2zbdGCzEPCbuRaDz%2FzgbzWV6ty2K1TcbToSEdDszr1to17JbGiI5yM7oUx5kEf200rCvVBEGWy8a%2BBCADZ8%2BWPAAEd2O%2BUnjqoAhDSjs2s3ate0heX3DFAUrtwIOcZLCK%2FWby%2BU2oD2eaXX0CXhBNY5PE0nzBLxr4%2B5%2BYH%2BFh8%2BSssOl3repWjH0bxni8iQ%3D%3D&client_id=107408391&client_secret=caa9b93ef209bcb8f754a5742b7d617d5db2bd5901ae8656b60e79cca93825f8&redirect_uri=https%3A%2F%2Fwww.thirdwebdemo.com%2Fredirect_url

2.2.3 通过refresh_token获取access_token

code的有效期只有5分钟,refresh_token的有效期半年,access_token的有效期1个小时。不建议每次都获取code来换取access_token,可以直接保存refresh_token,再使用refresh_token换access_token的方式。

请求示例:

POST /oauth2/v3/token HTTP/1.1
Host: oauth-login.cloud.huawei.com
Cache-Control: no-cache
Postman-Token: 53d26c97-c7d8-3d49-042a-db7a4b2768a5
Content-Type: application/x-www-form-urlencodedgrant_type=refresh_token&client_id=107408391&client_secret=caa9b93ef209bcb8f754a5742b7d617d5db2bd5901ae8656b60e79cca93825f8&refresh_token=DAECANR5QD9Ta3YKIn2Pwpmq8g6CyOGcsz3iNsxq8YXBpZs6EGlqb%2FM8Iyc%2FXVORdoqb%2FaZXKs9jqz72kQCmp9Om%2B7%2Fp7ff6QfH%2FKN32GwsE9xq%2BTbDT

3 获取应用级Access Token

参考文档:客户端模式(Client Credentials)

请求示例:

POST /oauth2/v3/token HTTP/1.1
Host: oauth-login.cloud.huawei.com
Cache-Control: no-cache
Postman-Token: 1e120cb0-fa6f-e622-1bf0-66a13c82b643
Content-Type: application/x-www-form-urlencodedgrant_type=client_credentials&client_id=107408391&client_secret=caa9b93ef209bcb8f754a5742b7d617d5db2bd5901ae8656b60e79cca93825f8

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee

关注我们,第一时间了解 HMS Core 最新技术资讯~


http://www.ppmy.cn/news/7297.html

相关文章

【BF算法】

BF 算法 BF 算法精讲 在学习到字符串的匹配问题时&#xff0c;了解到了BF算法和KMP算法。 对比这两个算法&#xff0c;先了解BF算法&#xff1b; 字符串匹配问题&#xff0c;比如说&#xff1a;有一个主串 “abbbcdef” &#xff0c; 子串 “bbc”&#xff0c;该问题就是在主…

JavaScript基础

一、JavaScript的介绍 JavaScript 是一种运行在 客户端的脚本语言&#xff0c;作为web标准的行为层&#xff0c;最初出现时只是为了实现网页端和用户之间的交互。在正式学习JS之前&#xff0c;我们首先需要对JS的产生和发展历史有一定的了解。 1. JS发展历史 1995年&#xf…

servlet(三)文件的下载

主要有几个步骤: 1、获取要下载的文件名 2、读取要下载的文件内容 (通过 ServletContext 对象可以读取,这个也是 ServletContext的应用) 3、获取要下载的文件类型 4、在回传前&#xff0c;通过响应头告诉客户端返回的数据类型 5、还要告诉客户端收到的数据是用于下载使用&#…

整合Kafka

Main Concepts 一些服务器形成了存储层&#xff0c;被称为broker&#xff0c;其他服务器运行kafka连接去不断地导入和导出数据作为事件流&#xff0c;将kafka和关系型数据库等存在的系统集成。 Servers: Kafka is run as a cluster of one or more servers that can span mult…

【工具类】后台Mock工具类

目录一、介绍二、使用方法1. Controller层定义接口2. 编写json文件3. 开启AOP4. 调用接口验证三、源码一、介绍 Controller层定义完接口后&#xff0c;不需要写业务逻辑。编写Json文件&#xff0c;调用接口时返回json文件的数据。 优点&#xff1a; 设计阶段即可定义好接口&…

写一个计算器【后缀表达式】(C++)

前言&#xff1a; 闲来无事&#xff0c; 用后缀表达式写了个计算器。。。 支持加()、减(-)、乘(*)、除(/)、乘方(^) 啥是后缀表达式&#xff1a; 波兰逻辑学家卢卡西维奇发明的表示表达式的方法 后缀式即逆波兰式&#xff0c;是波兰逻辑学家卢卡西维奇&#xff08;&#…

uTools V3.3.0 效率工具集

前言 uTools是一款基于electron开发的工具集软件&#xff0c;通过快捷唤醒搜索&#xff0c;直接打开各种功能&#xff0c;非常方便。 uTools uTools是一个极简、插件化、跨平台的现代化桌面软件。通过自由选配丰富的插件&#xff0c;打造你得心应手的工具集合。 通过快捷键…

Oracle数据库Date类型查询结果多出“.0“的解决方法

oracle设置数据库某张表的字段类型为date&#xff0c;数据库存值为 2019-11-25 18:51:47 格式&#xff0c;但是从数据库查询出来之后格式为 String stopTime map.get("stopTime").toString;2019-11-25 18:51:47.0 &#xff0c;多了个零&#xff0c;不知是毫秒还是…