有道云笔记 API
  1. OAuth1.0a授权说明
有道云笔记 API
  • 概述
  • 数据模型
  • 授权机制
  • 申请Consumer Key
  • 附录A:有道云笔记内容格式
  • 附录B:错误码及错误信息说明
  • 附录C: OAuth开源类库及有道云笔记SDK
  • 附录D: OAuth签名方法
  • OAuth1.0a授权说明
    • 授权流程
    • 授权请求说明
    • 请求request_token
      GET
    • 请求用户登录授权
      GET
    • 请求Access Token
      GET
  • OAuth2.0授权说明
    • OAuth 2.0授权流程
    • OAuth 2.0授权接口说明
    • 请求用户登陆授权
      GET
    • 获取AccessToken
      GET
    • OAuth1.0a的AccessToken置换成OAuth2.0的AccessToken
      GET
  • 用户操作API
    • 查看用户信息
      GET
  • 笔记本操作API
    • 查看用户全部笔记本
      POST
    • 列出笔记本下的笔记
      POST
    • 创建笔记本
      POST
    • 删除笔记本
      POST
  • 笔记操作API
    • 创建笔记
      POST
    • 查看笔记
      POST
    • 修改笔记
      POST
    • 移动笔记
      POST
    • 删除笔记
      POST
  • 分享操作API
    • 分享笔记链接
  • 附件操作API
    • 上传附件或图片
    • 下载附件/图片/图标
  1. OAuth1.0a授权说明

授权请求说明

在进行OAuth授权请求时,OAuth相关的参数可以放置在query string和http header中,这里我们推荐使用http header的方式,这样可以将OAuth相关的参数与接口非OAuth参数区别对待,其中Header name为Authorization,而Header value则为OAuth相关参数组成的值,格式如下:
OAuth[空格][parameterName=”value”],[空格][ parameterName=”value”]…此外在发送时还有以下几点需要注意:
1.
parameterName和value必须进行Percent Encoding (做法为先进行URL Encoding后再要将”+”替换为”%20”,将”*”替换为”%2A”,将”%7E”替换为”~”)
2.
value的引号为必须
3.
发送请求时参数可以是无序的,但是在签名时这些参数有一定的顺序要求,详见附录D
4.
请求的baseURL为有道云笔记的domain,对于线上环境该baseURL为note.youdao.com,而测试环境为notesandbox.youdao.com,下同
一个包含OAuth参数的Header示例如下所示:
Authorization: OAuth oauth_token="64e4f0c25029dd6687ea74cd64e9640a",
oauth_consumer_key="2456f9dd37e162ffe237c8b88739925f",
oauth_signature_method="HMAC-SHA1", oauth_timestamp="1343381467",
oauth_nonce="952606576956129", oauth_version="1.0",
oauth_signature="%2FLQhn0OCf3lCMPSAAMVW35aUka0%3D"

请求request_token#

l URL:[http://baseURL]/oauth/request_token
l **请求方式:**GET
l OAuth参数:
参数名参数说明
oauth_callback回调url,该url可以为oob,代表不回调。另外url还可以跟其他参数
oauth_consumer_key申请应用时拿到的consumerKey
oauth_signature_method签名方法,支持HMAC-SHA1
oauth_timestamp时间戳,当前时间,单位秒
oauth_nonce随机串,为了防止重放攻击,5分钟内同一用户同一应用同一时间发来的请求中oauth_nonce应不同
oauth_version1.0
oauth_signature签名,使用consumerSecret +’&’作为签名的key, 而签名的内容是除oath_signature以外的请求url内容,计算签名完毕后,使用base64编码,具体签名方法见附录D
l **返回结果:**请求成功时返回oauth_token和oauth_token_secret,即Request Token与Secret,结果示例:
oauth_token=8b1676312a97aaa762ad743853a3c814&oauth_token_secret=71eb91f4d40b896c0aed9820cb240f76
请求失败时返回http status code 500以及error message

请求用户登录授权#

l URL:[http://baseURL]/oauth/authorize
l **请求方式:**GET
l 请求参数:该处的参数必须以query string的形式发送
参数名参数说明
oauth_token请求request_token时返回的oauth_token
l **返回结果:**当用户成功登录并且选择接受授权后,返回oauth_token与oauth_verifier,否则返回出错信息
l 备注:
1.
应用将用户定向至授权页面时,如果已经携带了网易或者有道的cookie信息,则将直接询问用户是否授权,否则会重新定向到网易的通行证页面先进行登录。
2.
如果oauth_callback为oob,则不会产生回调,用户会在有道云笔记的授权页面上看到授权码,该授权码即为授权后的verifier,用户需要手工将该授权码黏贴至应用程序中完成OAuth授权程序。

请求Access Token#

l URL:[http://baseURL]/oauth/access_token
l **请求方式:**GET
l OAuth参数:
参数名参数说明
oauth_consumer_key第三方应用的Consumer Key
oauth_token请求request_token时返回的oauth_token
oauth_verifier用户授权后得到的oauth_verifier,或者是授权页面显示的授权码
oauth_signature_method签名方法,支持HMAC-SHA1
oauth_timestamp时间戳,当前时间,单位毫秒
oauth_nonce随机串,为了防止重放攻击,5分钟内同一用户同一应用同一时间发来的请求中oauth_nonce应不同
oauth_version1.0
oauth_signature使用consumerSecret + ’&’ + oauth_token_secret(该secret为请求request_token时返回的oauth_token_secret,即Request Token Secret)字串作为key, 而签名的内容是除oauth_signature以外的请求url内容,计算签名完毕后,使用base64编码具体签名方法见附录D
l **返回结果:**请求成功时返回oauth_token和oauth_token_secret,即为Access Token与Secret,结果示例:
oauth_token=f7063a40e0c480c99930131526d5d31c&oauth_token_secret=71eb91f4d40b896c0aed9820cb240f76
请求失败时返回http status code 500以及error message

访问OpenAPI#

在获得Access Token及Secret后,应用程序便可以通过OpenAPI访问、更新用户的数据,在进行OpenAPI的请求时,应用程序除了需要添加OpenAPI接口所需要的参数,仍然需要在Header中添加OAuth相关的参数以便对请求来源进行校验。
l OAuth参数:
参数名参数说明
oauth_consumer_key第三方应用的Consumer Key
oauth_token请求request_token时返回的oauth_token
oauth_signature_method签名方法,支持HMAC-SHA1
oauth_timestamp时间戳,当前时间,单位毫秒
oauth_nonce随机串,为了防止重放攻击,5分钟内同一用户同一应用同一时间发来的请求中oauth_nonce应不同
oauth_version1.0
oauth_signature使用consumerSecret + ’&’ + oauth_token_secret(该secret为请求request_token时返回的oauth_token_secret,即Request Token Secret)字串作为key, 而签名的内容是除oauth_signature以外的请求url内容,计算签名完毕后,使用base64编码具体签名方法见附录D
需要注意的是,在进行OpenAPI请求时,签名的内容根据OpenAPI接口的不同而有所不同:
1.
对于请求方式为GET的接口,在计算签名时除了OAuth本身的参数以及OpenAPI的URL,例如获取用户信息接口,还需要将该接口query string中的其他所有非OAuth参数加入到base string中一起进行签名
2.
对于请求方式为POST且Content Type为application/x-www-form-urlencoded的接口,例如创建笔记本接口,在计算签名时除了OAuth本身的参数以及OpenAPI的URL,还需要将该接口content body中的其他所有非OAuth参数加入到base string中一起进行签名,例如笔记本name
3.
对于请求方式为POST且Content Type为multipart/form-data的接口,例如创建笔记接口,在计算签名时只需要加入OAuth本身的参数及OpenAPI的URL,而不需要考虑content body中的参数
具体API的请求方式以及Content Type见下文关于OpenAPI的详细说明。
目前已经有一些OAuth相关的类库提供了计算签名以及获取Request Token和Access Token的方法,同时我们也提供了一些常见语言的SDK以便应用开发者可以快速的开发,详见附录C。
上一页
授权流程
下一页
请求request_token
Built with