• 如果您想对接当当网的用户信息,需要获取一些与用户紧密相关的信息(如用户的昵称、邮箱、custID),为保证用户数据的安全性与隐私性,您的应用需要取得用户的同意,即引导用户去授权。在这种情况下,您的应用需要使用“用户使用当帐号登录并授权”流程。

    当当采用国际通用的OAuth2.0协议,作为用户身份验证与授权协议。支持对网站、手机客户端、桌面客户端等不同类型的应用的授权。若要了解更多关于 OAuth2.0 的技术说明文档,可参看官方网站(http://oauth.net/2/) 。目前当当网站接入OAuth2.0服务只支持一种 Access Token(授权令牌)的方式:

    Server-side flow:此流程要求ISV应用有Web Server应用,能够保存应用本身的密钥以及状态,可以通过http直接访问当当的授权服务器。


  • 1. redirect_uri及callback定义规则

    redirect_uri指的是应用发起请求时,所传的回调地址参数,在用户授权后应用会跳转至redirect_uri。

    callback指的是应用注册时填写的回调地址链接或者网站接入时所验证的域名地址。

    相关的规则是:

    (1)对于Server-side flow,redirect_uri是必选参数,并且要求redirect_uri与callback的顶级域名一致。

    (2)在不可预知错误的情况下,返回到默认错误页面。

    2. scope定义规则

    scope指的是应用发起请求时,所请求的API调用权限范围。

    为空表示所有权限。

    3. View参数

    可选值:web

    Web对应普通的PC端(当当logo)浏览器页面样式。

    4.Access Token

    Access Token即用户授权后颁发的session key

  • 此流程需要您有自己的web服务器,能够保存应用本身的密钥以及状态,可以通过http直接访问当当的授权服务器。

    授权过程分为两个步骤:

    (1) 通过用户授权获取授权码Code; (获取授权码 :http://oauth.dangdang.com/authorize)

    (2) 用上一步获取的Code和应用密钥(AppSecret)通过Http Post方式换取Token。(获取访问令牌: http://oauth.dangdang.com/token)

    1. 参数说明

    1.1 获取授权码参数

    参数名字 

    参数选项

    参数值

    参数释义

     appId

     必选


     应用ID

     responseType

     必选

     code

     响应类型

     redirectUrl

     必选



     state

     可选


     维持应用的状态,传入值与返回值保持一致

     view

     可选

     默认为web


     

    1.2 返回值说明

    参数名字 参数选项 示例 参数释义

     code

     正常结果

     4A868CF11F142DC7663F90DBF9C37077

     授权码

     error

     异常时返回


     错误码

     error_description

     异常时返回


     错误描述

     

    1.3 获取访问令牌参数

    参数名字 参数选项 参数值 参数释义

     appId

     必选


     应用ID

     grantType

     必选

     code

     换取方式

     code

     必选


     授权码

     appSecret

     必选


     应用密钥

    refreshToken

     可选


     刷新令牌码

     redirectUrl

     必选



     view

     可选

     默认为web


     state

     可选


     维持应用的状态,传入值与返回值保持一致


    1.4  获取访问令牌的返回值以redirect_uri中的参数形式返回

    Key  选项 示例 说明

     accessToken

     必选

     4A868CF11F142DC7663F90

     访问令牌

     expires_in

     必选

     yyyy-MM-dd hh:mm:ss

     令牌到期时间

     refresh_token

     必选

     4A868CF11F142DC7663F90

     刷新令牌

     re_expires_in

     必选

     

     刷新令牌过期时间

     re_expires_time

     必选

     

     刷新令牌到期时间

     custId

     必选

     

     顾客ID

     nickname

     必选

     

     顾客昵称

    email

     必选

     

    顾客邮箱

     sign

     必选

     

    shop_idapp_idedition_idedition_end_date经过加密生成的签名

    2. 应用示例

    2.1 请求授权用户登录

    http://oauth.dangdang.com/authorize?appId=123&redirectUrl=http://www.clientserver.com&responseType=code&state=yourstate&view=web

     

    2.2 请求授权用户授权(用户登录后)

    出现授权页面后,用户可以选择“授权”。

    若用户选择“授权”,则页面跳转至应用的回调地址,同时返回授权码code以及state参数。

    返回URL如下图所示:

    2.3获取访问令牌

    http://oauth.dangdang.com/token?appId=123&shopId=121&code=53226E0D5C4FFAA2E353B41824FA5307&appSecret=

    5FDD35D3A94D73514CD6F1A5B58AED53&redirectUrl=http://www.clientserver.com/process_code.do&grantType=code&view=web&state=yourstate

    然后把responseJson 转化为对象,或者直接从里面提取:accessToken字段。

    返回结果内容示例:

    {

    "shop_id":"121",

    "accessToken":"0A8A014439F745224352C0D44B4AD8EC",

    "re_expires_time":"2013-08-26 17:46:49",

    "re_expires_in":"5183998",

    "state":"yourstate",

    "expires_in":"2013-07-27 18:07:52",

    "refresh_token":"89C7AB20DF3EACFC06446AF9732907B6",

    "view":"web",

    "custID":1156565,

    "nickname":"张三",

    "email":"zhangsan@dangdang.com",

    "sign":"DF31862TY5CBB64RT180008E2F7E41E4"

    }


  • 错误信息 错误原因

     appId can not be empty

     appId不能为空

     redirectUrl can not be empty

     redirectUrl不能为空

     responseType can not be empty

     responseType不能为空

     appSecret can not be empty

     appSecret不能为空

     code can not be empty

     code不能为空

     grantType can not be empty

     grantType不能为空

     refreshToken can not be empty

     refreshToken不能为空

     OAUTH SERVER ERROR:xxxxx

     系统内部错误,请重试