写点什么

Web 应用怎样获取 Access Token?

作者:HMS Core
  • 2022-12-29
    贵州
  • 本文字数:1648 字

    阅读完需:约 5 分钟

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.1Host: oauth-login.cloud.huawei.comCache-Control: no-cachePostman-Token: 923683a5-7379-03f5-b83f-072ba217fc65Content-Type: application/x-www-form-urlencoded
grant_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.1Host: oauth-login.cloud.huawei.comCache-Control: no-cachePostman-Token: 53d26c97-c7d8-3d49-042a-db7a4b2768a5Content-Type: application/x-www-form-urlencoded
grant_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.1Host: oauth-login.cloud.huawei.comCache-Control: no-cachePostman-Token: 1e120cb0-fa6f-e622-1bf0-66a13c82b643Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&client_id=107408391&client_secret=caa9b93ef209bcb8f754a5742b7d617d5db2bd5901ae8656b60e79cca93825f8
复制代码


了解更多详情>>


访问华为开发者联盟官网


获取开发指导文档


华为移动服务开源仓库地址:GitHubGitee


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

用户头像

HMS Core

关注

HMS Core技术团队。 2022-06-16 加入

分享最新的技术干货,带来最全的能力应用场景,更新热门开发者圈子活动。与开发者一起,同成长,共精彩。

评论

发布
暂无评论
Web应用怎样获取Access Token?_HMS Core_HMS Core_InfoQ写作社区