JDC 的 ACCESS_TOKEN 授权流程

news/2024/7/5 5:30:09

JDC 的 ACCESS_TOKEN 授权流程

这里统一为JDC授权流程。最近在对接国外版的天猫和京东,在对接API直接,授权需要token的获取。像LAZADA,Shopee,和JD Central 这三家的接口,其token的授权流程类似,这里统一记录一下。

授权文档地址

https://jos.jd.co.th/home/home#/doc/common/77

基本流程:

  1. 链接平台地址,携带上必要的参数以及重定向地址。
  2. 平台会返回302响应,将浏览器重定向到商家登录授权页面。
  3. 商家登录授权后,平台会返回301重定向到1上的重定向地址,并返回code参数
  4. 应用接受到code参数,并根据已有的appKey和AppSecret参数去获取token
  5. 根据上一步返回的refresh_token,可以进行token刷新。

流程图:

在这里插入图片描述

步骤分析:

第一步:连接平台地址

https://oauth.jd.co.th/oauth2/to_login?app_key=xxxx&response_type=code&redirect_uri=xxxx&state=20200428&scope=snsapi_base

参数说明:

  • app_key: 需要从应用后台获取。
  • response_type:响应类型,固定值为code。
  • redirect_uri:重定向地址。商家登录成功之后,平台需要重定向的地址,携带平台给的code。
  • scope:作用域,snsapi_base|snsapi_union_login
  • state:用于维护请求和回调的状态。也可以用来传递参数。

第二步:平台重定向商家授权页面

在这里插入图片描述

如果已经登录过,就是这样的。

在这里插入图片描述

第三步:重定向地址。

当商家登录授权成功后,平台会将浏览器重定向到第一步中的redirect_url上,并添加两个参数。

redirect_uri? code = CODE & state = STATE

第四步:接受code并进行token获取。

在redirect_uri上,我们可以接收到code和state两个参数。此时我们就可以通过他们去平台获取token。

https://oauth.jd.co.th/oauth2/access_token?app_key=xxxx&app_secret=xxxxxx&grant_type=authorization_code&code=xxxx

参数描述:

  • app_key: 通过应用后台获取。
  • app_secret: 通过应用后台获取。
  • grant_type:固定值为authorization_code
  • code:code就是我们第三步接受到的code参数。

此时我们就可以拿到token响应了。响应示例如下:

{
    access_token: "a3207b6b5ad04249ad1dbf6a98248bea",
    expires_in: 3600000,
    refresh_token: "4ecbbab0e9e443159c518da1d10741ad",
    scope: "snsapi_base",
    open_id: "jos_dev"
}

响应参数描述:

  • access_token : api接口的访问令牌。
  • expires_in:access_token 的失效时间。单位为秒。
  • refresh_token: 刷新token是用来延迟token失效的一种方式。refresh_token在一个月内,只能调用500次。
  • scope:用户认证的作用域。
  • open_id:认证用户的id。

第四步:刷新token。

刷新token:

https://oauth.jd.co.th/oauth2/refresh_token?app_key=XXXXX&app_secret=XXXXX&grant_type=refresh_token&refresh_token=XXXXX

刷新token的参数列表描述:

  • app_key: 通过应用后台获取
  • app_secret: 通过应用后台获取
  • grant_type: 固定值为refresh_token
  • refresh_token:刷新token值就是第三步中获取到的。

刷新token接口的响应:

{
    access_token: "a3207b6b5ad04249ad1dbf6a98248bea",
    expires_in: 3600000,
    refresh_token: "4ecbbab0e9e443159c518da1d10741ad",
    scope: "snsapi_base",
    open_id: "xxxxxxxxxxxxxxxxxxx"
}

JDC的刷新token是不会将原有token更新的,即只是延长token的有效时间。与lazada的不同。


http://www.niftyadmin.cn/n/3682149.html

相关文章

MySQL Error--存储inode用完后报设备没有空间

问题描述:磁盘有足够剩余空间,但在创建文件或文件夹时报错,提示“设备没有空间”。 问题原因:当存储设备通过分区格式化为文件系统后,会分为两部分:1、block部分: 存储的最小单位为扇区(Sector)&#xff0c…

页面部分缓存概述

页面部分缓存概述 页面部分缓存允许缓存页的部分内容,其他部分则为动态内容。由于大部分Web页面的某些部分在每一次请求时都需要进行更改,所以,在这种情况下,就只能缓存页面的一部分,即页面部分缓存。 页面部分缓…

Java实现二维数组的排列组合

今天同事在做一个需求的时候&#xff0c;需要设计到二维数组的排列组合为题&#xff0c;就趁这个机会&#xff0c;实现了这个功能&#xff0c;现记录一下&#xff1b; public static void main(String[] args) {List<String[]> list new ArrayList<>();list.add(…

初学linux时遇到的那些哭笑不得的问题

1.终端中无法输入密码&#xff1f; 在终端输入密码&#xff0c;是不会在输入密码的时候看见星号或者圆点符号的。它不会有任何输入密码的视觉指示&#xff0c;也不会有任何光标移动&#xff0c;什么也不显示。 其实是输进去了&#xff0c;只是没有明文显示出来而已。输入完成后…

页面部分缓存

页面部分缓存是指输出缓存页面的某些部分&#xff0c;而不是缓存整个页面内容。实现页面部分缓存有两种机制&#xff1a;一种是将页面中需要缓存的部分置于用户控件&#xff08;.ascx文件&#xff09;中&#xff0c;并且为用户控件设置缓存功能&#xff08;包含用户控件的ASP.N…

Linux常用查询文件或日志命令

常见查询文件内容命令汇总如下&#xff1a; cat filename 查看日志&#xff0c;会打开整个文件&#xff0c;直接跑到最后面。tac filename 查看日志&#xff0c;会打开整个文件&#xff0c;倒序显示&#xff0c;不常用。more filename 查看日志&#xff0c;可以上下翻页&#…

loj#6285 数列分块入门 9 ( 回 滚 )

题目 &#xff1a; 链接 &#xff1a;https://loj.ac/problem/6285 题意&#xff1a;给出一个长为 n的数列&#xff0c;以及 n个操作&#xff0c;操作涉及询问区间的最小众数。 思路&#xff1a;虽然这不是一道 回滚莫队题&#xff0c;就是 暴力分块 的题&#xff0c; 但是 还…

使用Java实现一个缓存

啥也不说&#xff0c;直接上代码&#xff0c;欢迎指正。 package com.example.demo.cache;/*** className: JdkCache* description: TODO 类描述* author: Yang.H* date: 2021/8/2014:26**/import lombok.extern.slf4j.Slf4j;import java.util.Date; import java.util.Map; im…