京东联盟开发(4) OAuth2.0授权

本文介绍京东联盟开发过程中OAuth2.0授权过程。

一、OAuth2.0定义

权威定义:OAuth is An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications.

OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站、移动或桌面应用上存储的私密的资源(如用户个人信息、照片、视频、联系人列表),而无需将用户名和密码提供给第三方应用。

OAuth 2.0是OAuth协议的下一版本,但不向后兼容OAuth 1.0。 OAuth 2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程。

OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。

新浪微博和微信中广泛使用OAuth 2.0协议。

如果要了解更多关于OAuth2.0的技术说明,请参考官方网站  https://oauth.net/2/

二、OAuth2.0配置

配置如下,在回调URL中填下要回调的地址即可。

三、接口定义

目前,京东联盟的OAuth2.0支持以下方式获取Access Token。

(1)Authorization Code

此流程要求ISV或商家(自主研发应用)有web服务器,能够保持应用本身的密钥以及状态,可以通过https直接访问京东的授权服务器。
(2)Native Application

此流程适合ISV或商家(自主研发应用)没有自己的web服务器,且应用为原生程序,即客户端应用(同时应用无法与浏览器交互,但是可以外调用浏览器)。
(3)Refresh token

通过前两种流程,获取了Access token以及Rrfresh token(刷新令牌),Access token都有一定的期限,通过服务市场授权应用,Access token期限以购买周期为准。当Access token过期时,用户可以到京东服务市场重新购买应用。

1. 获取授权码Code

接口地址

https://oauth.jd.com/oauth/authorize

获取授权码code的参数

参数名称 参数选项 描述
response_type 必须 此流程下,该值固定为code
client_id 必须 即创建应用时的Appkey(从JOS控制台->管理应用中获取)
redirect_uri 必须 即应用的回调地址,必须与创建应用时所填回调页面url一致
state 可选 状态参数,由ISV自定义,颁发授权后会原封不动返回
scope 可选 权限参数,API组名串。多个组名时,用","分隔,目前支持参数值:read
view 可选
移动端授权,该值固定为wap;非移动端授权,无需传值

2. 获取令牌Access Token

接口地址

https://oauth.jd.com/oauth/token

获取访问令牌Access token的参数

参数名称 参数选项 描述
grant_type 必须 授权类型,此流程下,该值固定为authorization_code
code 必须 授权请求返回的授权码
redirect_uri 必须 应用的回调地址,必须与创建应用时所填回调页面url一致
client_id 必须 即创建应用时的Appkey(从JOS控制台->管理应用中获取)
client_secret 必须 即创建应用时的Appsecret(从JOS控制台->管理应用中获取)
state 可选 状态参数,由ISV自定义,颁发授权后会原封不动返回

四、SDK实现与调用方法

京东联盟SDK实现代码如下所示:

其调用方法如下

五、实现效果

当访问回调地址 http://www.fangbei.org时,将引导使用应用的用户登录到如下地址

https://oauth.jd.com/oauth/authorize?response_type=code&client_id=85E279145E324CBDAC10AD6712ED01A3&redirect_uri=http://www.fangbei.org/&scope=snsapi_base&state=&view=123

页面显示如下

填写账号,密码,验证码之后,点击登录,页面将跳转到

 https://oauth.jd.com/login

界面显示如下

用户同意授权,页面跳转至应用的回调地址,同时返回授权码code以及state参数。

http://www.fangbei.org/?code=uRTF98

其中将获得code信息

再根据code获得访问令牌access_token,得到信息如下

{
    "access_token":"dfb44f04-1094-4bcc-99d2-d5d3f01ca20e",
    "code":0,
    "expires_in":31535999,
    "refresh_token":"bd7535c2-1493-4596-b3b2-efcfeff635cc",
    "time":"1494639358958",
    "token_type":"bearer",
    "uid":"8705417056",
    "user_nick":"方倍工作室"
}

六、代码下载

扫描关注下方二维码,回复 “1241” 获取

时间: 2024-10-13 01:13:43

京东联盟开发(4) OAuth2.0授权的相关文章

Java微信公众平台开发(十六)--微信网页授权(OAuth2.0授权)获取用户基本信息

转自:http://www.cuiyongzhi.com/post/78.html 好长时间没有写文章了,主要是最近的工作和生活上的事情比较多而且繁琐,其实到现在我依然还是感觉有些迷茫,最后还是决定静下心来坚持一开始的选择,继续我们的微信系列文章的后续更新,也希望在自己有时间的时候能把更多的内容呈现给大家,前面一系列的文章讲述了很多微信开发相关的基础知识点 [微信系列文章],那么从这一篇开始将讲述微信较深一层次或者说在产品应用中时刻会用到的一些技术点,那么下面就让我们进入正题吧,这一篇我要讲述的

京东联盟开发(3) 创建应用

本文介绍京东联盟中创建应用的过程. 一.官网 京东联盟创建应用的官网地址 http://dev.jd.com/ 在应用管理中, 点击“创建应用” 填写相关信息 应用名称:方倍工作室 应用平台:“JOS平台” 应用标签:买家-无线应用 上传应用图标,设置回调url,然后点保存. 获得应用的AppKey及AppSecret 然后访问 回调url: http://www.fangbei.org,系统将进入授权流程 用在京东上的个人用户账号登录即可 确认授权给“方倍工作室”应用 授权成功后,获得信息如下

新浪微博Oauth2.0授权认证及SDK、API的使用(Android)

---------------------------------------------------------------------------------------------- [版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/51939853作者:朱培      ID:sdksdk0      邮箱: [email protected] -------------------------

Oltu在Jersey框架上实现oauth2.0授权模块

oltu是一个开源的oauth2.0协议的实现,本人在此开源项目的基础上进行修改,实现一个自定义的oauth2.0模块. 关于oltu的使用大家可以看这里:http://oltu.apache.org/ 项目可以从这里下载:http://mirror.bit.edu.cn/apache/oltu/org.apache.oltu.oauth2/ 项目中我将四种授权方式都做了实现(授权码模式.简化模式.密码模式及客户端模式),但是这里仅以授权码模式为例,服务端采用Jersey框架实现,而客户端采用s

使用微服务架构思想,设计部署OAuth2.0授权认证框架

1,授权认证与微服务架构 1.1,由不同团队合作引发的授权认证问题 去年的时候,公司开发一款新产品,但人手不够,将B/S系统的Web开发外包,外包团队使用Vue.js框架,调用我们的WebAPI,但是这些WebAPI并不在一台服务器上,甚至可能是第三方提供的WebAPI.同时处于系统安全的架构设计,后端WebAPI是不能直接暴露在外面的:另一方面,我们这个新产品还有一个C/S系统,C端登录的时候,要求统一到B/S端登录,可以从C端无障碍的访问任意B/S端的页面,也可以调用B/S系统的一些API,

微信公众平台开发—利用OAuth2.0获取微信用户基本信息

1.首先在某微信平台下配置OAuth2.0授权回调页面: 2.通过appid构造url获取微信回传code值(appid可在微信平台下找到) 1).微信不弹出授权页面url: A.code回传到页面wxProcess2.aspx,不带参数 [csharp] view plain copy Response.Redirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&

京东联盟开发(5) 推广店铺采集

接口地址: https://media.jd.com/gotoadv/shop 方法 和 京东联盟开发(1) 商品SKUID采集 相同, 效果如下

Spring Security实现OAuth2.0授权服务 - 进阶版

<Spring Security实现OAuth2.0授权服务 - 基础版>介绍了如何使用Spring Security实现OAuth2.0授权和资源保护,但是使用的都是Spring Security默认的登录页.授权页,client和token信息也是保存在内存中的. 本文将介绍如何在Spring Security OAuth项目中自定义登录页面.自定义授权页面.数据库配置client信息.数据库保存授权码和token令牌. 一.引入依赖 需要在基础版之上引入thymeleaf.JDBC.my

OAuth2.0授权登录

最近工作中遇到了多系统间的授权登录,对OAuth2.0进行了学习研究,并总结备忘. [场景] 我们登录一些论坛等网站的时候,如果不想单独注册该网站账号,可以选择用微信或QQ账号进行授权登录. 这样的第三方登录方式到底是怎么实现的呢?难道是腾讯把我们微信或QQ账号信息卖给了这些网站?很显然,腾讯是不会这么干的,这种登录方式的实现,其实就是使用的OAuth2.0的授权登录方式. 类似地,在公司内部,如果公司有多套不同的软件系统,例如公司内网的财务报销系统.考勤系统.报销系统.人事系统等,也可以实现一