SugarSync的API总结
SugarSync API
App支持SugarSync网盘的前提:
1、AccessKeyID:xxx
2、Private Access Key:xxx
3、AppID:xxx
详细的API总结如下:
Creating a Refresh Token
HTTP Request Example
POST https://api.sugarsync.com/app-authorization HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.1
Host: api.sugarsync.com
Content-Length: 364
Content-Type: application/xml; charset=UTF-8
<?xml version="1.0" encoding="UTF-8" ?>
<appAuthorization>
<username>jsmith127@sugarsync.com</username>
<password>sugar20P$</password>
<application>/sc/10061/3_21053</application>
<accessKeyId>AKIAJTXL5NNLKNIAEORA</accessKeyId>
<privateAccessKey>QAzJKVkzSXbIXWFwEPbzmRYmP8VmdLyNn33AvjRP</privateAccessKey>
</appAuthorization>
Response Example
HTTP/1.1 201 Created
Content-Type: application/xml; charset=UTF-8
Date: Wed, 28 Mar 2012 19:29:00 GMT
Location: https://api.sugarsync.com/app-authorization/A31303036322f335f3237303337
Access-Control-Allow-Origin: *
Server: Noelios-Restlet-Engine/1.1.5
Transfer-Encoding: chunked
200-299 |
The request was successful. The refresh token was created. |
400 |
Bad request. Typically returned if required information, such as the username, was not provided as input. |
401 |
Authorization required. The presented credentials, if any, were not sufficient to access the resource. |
500-599 |
Server error. |
说明:
- request中header的参数都可忽略,一般的框架都会根据url和body自动填充。如果出现domain错误,表示host参数不正确,需要自己显示的添加。
- 请求的body中为xml结构,注意格式即可。
- response中的location即为refreshToken,用于下一步请求accessToken。
- 如果有异常,建议多使用fiddler参看请求和返回内容
- 当返回码为400时候,多为账号密码错误,或者请求url错误;当为401,多为accessToken错误或者过期失效。后续api一样。
Creating an Access Token
HTTP Request Example
POST https://api.sugarsync.com/authorization HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.1
Host: api.sugarsync.com
Content-Length: 358
Content-Type: application/xml; charset=UTF-8
<?xml version="1.0" encoding="UTF-8" ?>
<tokenAuthRequest>
<accessKeyId>AKIAJTXL5NNLKNIAEORA</accessKeyId>
<privateAccessKey>QAzJKVkzSXbIXWFwEPbzmRYmP8VmdLyNn33AvjRP</privateAccessKey>
<refreshToken>https://api.sugarsync.com/app-authorization/A31303036322f335f3237303337</refreshToken>
</tokenAuthRequest>
Response Example
HTTP/1.1 201 Created
Content-Type: application/xml; charset=UTF-8
Date: Wed, 28 Mar 2012 19:30:44 GMT
Location: https://api.sugarsync.com/authorization/SmZ8zlrkR8j0oefVmmD4dUD83
Access-Control-Allow-Origin: *
Server: Noelios-Restlet-Engine/1.1.5
Transfer-Encoding: chunked
<?xml version="1.0" encoding="utf-8"?>
<authorization>
<expiration>2012-03-28T23:30:44.463+03:00</expiration>
<user>https://api.sugarsync.com/user/5664947</user>
</authorization>
说明:
- accessToken在response的header中,参数名为location
- body中包含过期时间和用户信息uri
- user的最后一个数字字符串即为userid,频繁用于后续api
- body为xml格式,需要不同平台下的解析,iOS自带解析委托为XMLParseDelegate
- 得到的过期时间为世界标准时间UTC格式,需要转换为当地时间,具体参考平台方法
Retrieving User Information
HTTP Request Example
GET https://api.sugarsync.com/user/566494 HTTP/1.1
Authorization: https://api.sugarsync.com/authorization/SmZ8zlrkR8j0oefVmmD4dUD83...
User-Agent: Jakarta Commons-HttpClient/3.1
Host: api.sugarsync.com
Response Example
HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8
Date: Fri, 22 Oct 2011 08:01:54 GMT
Access-Control-Allow-Origin: *
Server: Noelios-Restlet-Engine/1.1.5
Transfer-Encoding: chunked
<?xml version="1.0" encoding="UTF-8"?>
<user>
<username>jsmith@sugarsync.com</username>
<nickname>jsmith</nickname>
<quota>
<limit>2000000000</limit>
<usage>345000000</usage>
<salt>8ijYg==</salt>
</quota>
<workspaces>https://api.sugarsync.com/user/566494/workspaces/contents</workspaces>
<syncfolders>https://api.sugarsync.com/566494/folders/contents</syncfolders>
<deleted>https://api.sugarsync.com/folder/:sc:566494:9</deleted>
<magicBriefcase>https://api.sugarsync.com/folder/:sc:566494:2</magicBriefcase>
<webArchive>https://api.sugarsync.com/folder/:sc:566494:1</webArchive>
<mobilePhotos>https://api.sugarsync.com/folder/:sc:566494:3</mobilePhotos>
<albums>https://api.sugarsync.com/566494/albums/contents<albums/>
<recentActivities>https://api.sugarsync.com/user/566494/recentActivities/contents</recentActivities>
<receivedShares>https://api.sugarsync.com/user/566494/receivedShares/contents</receivedShares>
<publicLinks>https://api.sugarsync.com/user/566494/publicLinks/contents</publicLinks>
<maximumPublicLinkSize>25</maximumPublicLinkSize>
</user>
说明:
1. 至此请求头中的Authorization都为accessToken,且必须
2. Xml中参数很多,主要关注syncfolders和magicBriefcase两个参数
3. Syncfolders表示网盘根目录,默认有一个子文件夹“My SugarSync”,为自动创建,且不能编辑该文件夹
4. magicBriefcase表示文件夹“My SugarSync”
5. 特别注意,Sugarsync网盘不支持在根目录下创建文件,只允许创建文件夹,而My SugarSync文件夹固定且子目录无限制,故可以在其目录下创建应用根目录
Retrieving Folder Contents
HTTP Request Example
GET https://api.sugarsync.com/folder/:sc:566494:5/contents HTTP/1.1
Authorization: https://api.sugarsync.com/authorization/SmZ8zlrkR8j0oefVmmD4dUD83...
User-Agent: Jakarta Commons-HttpClient/3.1
Host: api.sugarsync.com
Response Example
HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8
Date: Tue, 29 Nov 2011 23:06:11 GMT
Access-Control-Allow-Origin: *
Server: Noelios-Restlet-Engine/1.1.5
Transfer-Encoding: chunked
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<collectionContents start="0" hasMore="false" end="4">
<collection type="folder">
<displayName>100ANDRO</displayName>
<ref>https://api.sugarsync.com/folder/:sc:566494:6552993_17248</ref>
<contents>https://api.sugarsync.com/folder/:sc:566494:6552993_17248/contents</contents>
</collection>
<collection type="folder">
<displayName>2010-10-10</displayName>
<ref>https://api.sugarsync.com/folder/:sc:566494:6552993_17250</ref>
<contents>https://api.sugarsync.com/folder/:sc:566494:6552993_17250/contents</contents>
</collection>
<file>
<displayName>AbeLincoln.jpg</displayName>
<ref>https://api.sugarsync.com/file/:sc:566494:6552993_17252</ref>
<size>38539</size>
<lastModified>2010-02-11T15:26:52.000-08:00</lastModified>
<mediaType>image/jpeg</mediaType>
<presentOnServer>true</presentOnServer>
<fileData>https://api.sugarsync.com/file/:sc:566494:6552993_17252/data</fileData>
</file>
<file>
<displayName>GeorgeWashington.jpg</displayName>
<ref>https://api.sugarsync.com/file/:sc:566494:6552993_17254</ref>
<size>956022</size>
<lastModified>2011-11-11T07:48:10.000-08:00</lastModified>
<mediaType>image/jpeg</mediaType>
<presentOnServer>true</presentOnServer>
<fileData>https://api.sugarsync.com/file/:sc:566494:6552993_17254/data</fileData>
</file>
</collectionContents>
说明:
1. 经过尝试,发现实例中url代表一般路径,但是当访问根目录时候,需要上一个api中得到的syncfolders参数
2. 一般文件或者文件夹的id为“:sc:用户id:文件夹标识id”,可通过请求父文件夹得到contents,body中“ref”参数即为文件或者文件夹id。
3. 请求时候,可以在url后添加“?type=folder”或者“?type=file”,分别得到文件或者文件夹集合
4. 修改时间同样为世界时间UTC
Creating a Folder
HTTP Request Example
POST https://api.sugarsync.com/folder/:sc:566494:4 HTTP/1.1
Authorization: https://api.sugarsync.com/authorization/SmZ8zlrkR8j0oefVmmD4dUD83...
User-Agent: Jakarta Commons-HttpClient/3.1
Host: api.sugarsync.com
Content-Length: 294
Content-Type: application/xml; charset=UTF-8
<?xml version="1.0" encoding="UTF-8" ?>
<folder>
<displayName>work-docs</displayName>
</folder>
Response Example
HTTP/1.1 201 Created
Content-Type: application/octet-stream; charset=UTF-8
Content-Length: 0
Date: Wed, 14 Dec 2011 19:35:02 GMT
Location: https://api.sugarsync.com/folder/:sc:566494:190_123294339
Access-Control-Allow-Origin: *
Server: Noelios-Restlet-Engine/1.1.5
说明:
1. 如果一直返回错误,保证accessToken和文件夹名正确前提下,那肯定是url有问题,文件夹父文件夹id有误
2. Body中location即为创建文件夹的uri
Deleting a Folder
HTTP Request Example
DELETE https://api.sugarsync.com/folder/:sc:566494:190_123279794 HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.1
Host: api.sugarsync.com
Content-Length: 294
Content-Type: application/xml; charset=UTF-8
Response example
HTTP/1/1 204 No Content
Content-Type: application/octet-stream; charset=UTF-8
Content-Length: 0
Date: Tue, 20 Dec 2011 18:29:20 GMT
Access-Control-Allow-Origin: *
Server: Noelios-Restlet-Engine/1.1.5
Deleting a File
HTTP Request Example
DELETE https://api.sugarsync.com/file/:sc:566494:190_138381019 HTTP/1.1
Authorization: https://api.sugarsync.com/authorization/SmZ8zlrkR8j0oefVmmD4dUD83...
User-Agent: Jakarta Commons-HttpClient/3.1
Host: api.sugarsync.com
Response Example
HTTP/1/1 204 No Content
Content-Type: application/octet-stream; charset=UTF-8
Content-Length: 0
Date: Tue, 03 Jan 2012 21:24:45 GMT
Access-Control-Allow-Origin: *
Server: Noelios-Restlet-Engine/1.1.5
Retrieving File Data
HTTP Request Example
GET https://api.sugarsync.com/file/:sc:566494:6552993_66025/data HTTP/1.1
Authorization: https://api.sugarsync.com/authorization/SmZ8zlrkR8j0oefVmmD4dUD83...
User-Agent: Jakarta Commons-HttpClient/3.1
Host: api.sugarsync.com
Response Example
HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8
Content-Length: 1502167
Date: Wed, 04 Jan 2012 19:31:29 GMT
Accept-Ranges: bytes
Content-Disposition: attachment; filename*=UTF-8''PineCreek5_120411.jpg
Access-Control-Allow-Origin: *
Server: Noelios-Restlet-Engine/1.1.5
说明:
url其实就是file的uri加上“/data”。
Creating a File
HTTP Request Example
POST https://api.sugarsync.com/folder/:sc:566494:5 HTTP/1.1
Authorization: https://api.sugarsync.com/authorization/SmZ8zlrkR8j0oefVmmD4dUD83...
User-Agent: Jakarta Commons-HttpClient/3.1
Host: api.sugarsync.com
Content-Length: 294
Content-Type: application/xml; charset=UTF-8
<?xml version="1.0" encoding="UTF-8" ?>
<file>
<displayName>Winter2012.jpg</displayName>
<mediaType>image/jpeg</mediaType>
</file>
Response Example
HTTP/1.1 201 Created
Content-Type: application/octet-stream; charset=UTF-8
Content-Length: 0
Date: Mon, 02 Jan 2012 22:27:00 GMT
Location: https://api.sugarsync.com/file/:sc:566494:190_137264710
Access-Control-Allow-Origin: *
Server: Noelios-Restlet-Engine/1.1.5
说明:
1. 这个api是和upload file一起使用的。因为SugarSync采用id来标识文件和文件夹,所以上传文件之前,需要给文件先创建一个占位id。
2. 请求的body里面为创建的文件名和文件格式
Uploading File Data
HTTP Request Example
PUT https://api.sugarsync.com/file/:sc:566494:6552993_66025/data HTTP/1.1
Authorization: https://api.sugarsync.com/authorization/SmZ8zlrkR8j0oefVmmD4dUD83...
User-Agent: Jakarta Commons-HttpClient/3.1
Host: api.sugarsync.com
Content-Length: 1431
Response Example
HTTP/1.1 204 OK
Content-Type: application/octet-stream; charset=UTF-8
Content-Length: 0
Date: Wed, 04 Jan 2012 21:58:25 GMT
Access-Control-Allow-Origin: *
Server: Noelios-Restlet-Engine/1.1.5
SugarSync的API总结的更多相关文章
- 干货来袭-整套完整安全的API接口解决方案
在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...
- 12306官方火车票Api接口
2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...
- 几个有趣的WEB设备API(二)
浏览器和设备之间还有很多有趣的接口, 1.屏幕朝向接口 浏览器有两种方法来监听屏幕朝向,看是横屏还是竖屏. (1)使用css媒体查询的方法 /* 竖屏 */ @media screen and (or ...
- html5 canvas常用api总结(三)--图像变换API
canvas的图像变换api,可以帮助我们更加方便的绘画出一些酷炫的效果,也可以用来制作动画.接下来将总结一下canvas的变换方法,文末有一个例子来更加深刻的了解和利用这几个api. 1.画布旋转a ...
- JavaScript 对数据处理的5个API
JavaScript对数据处理包括向上取整.向下取整.四舍五入.固定精度和固定长度5种方式,分别对应ceil,floor,round,toFixed,toPrecision等5个API,本文将对这5个 ...
- ES5对Array增强的9个API
为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...
- javascript的api设计原则
前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博文同时也参考了其他一些文章,相关地址会在后面贴出来.很难做到 ...
- 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino
大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...
- 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用
由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...
随机推荐
- SQL随着子查询结果更新多个字段
笔者:iamlasong 要求:表格内容需要改变,在临时表中内容的变化,使用SQL官方声明更新表若干领域. 假设更新一个字段,直接用字段名=子查询就能够了,多个字段更新,将字段在括号里并列写出就可以, ...
- Android批量图片加载经典系列——使用二级缓存、异步网络负载形象
一.问题描写叙述 Android应用中常常涉及从网络中载入大量图片,为提升载入速度和效率,降低网络流量都会採用二级缓存和异步载入机制.所谓二级缓存就是通过先从内存中获取.再从文件里获取,最后才会訪问网 ...
- C在宏定义中使用的语言可变参数
于C标准库的语言,printf.scanf.sscanf.sprintf.sscanf入输出函数,參数都是可变的.在调试程序时.我们可能希望定义一个參数可变的输出函数来记录日志,那么用可变參数的宏是一 ...
- oracle创建user具体指示
一个.用户的概念 用户,这是user,通俗的讲就是参观oracle数据库"人".在oracle在.的各种安全参数的用户可控制,为了保持数据库的安全性,的概念包括模型(schema) ...
- php禁用一些重要功能
passthru() 功能叙述性说明:我们同意将运行外部程序和回音输出.分类似至 exec(). 临界水平:高 exec() 功能叙述性说明:同意运行外部程序(例如 UNIX Shell 要么 CMD ...
- Unity3D音频播放器 动态装载组件
大多数在线Unity有关如何只教程Unity在播放音乐.之后如何通过拖动它们无法继续添加音频文件 但有时在游戏中的对象要玩几个声音.这时候我们就需要使用代码控制,拖动推教程AudioClip颂值的方法 ...
- C++中的class
C++中的class是C++不同于C的关键所在: 是面向对象中声明的类: 公有成员public member 在程序的不论什么地方都能够被訪问实行信息隐藏的类将 其publ ...
- Codeforces #180 div2 C Parity Game
// Codeforces #180 div2 C Parity Game // // 这个问题的意思被摄物体没有解释 // // 这个主题是如此的狠一点(对我来说,),不多说了这 // // 解决问 ...
- Python学习笔记:概要
1.print不同的互动解释语句输出和输出 在以下示例,我们分配字符串值到可变myString.先用print 要显示一个变量的内容, 其次是变量名,以显示. >>> myStrin ...
- Mybatis之动态构建SQL语句
今天一个新同事问我,我知道如何利用XML的方式来构建动态SQL,可是Mybatis是否能够利用注解完成动态SQL的构建呢?!!答案是肯定的,MyBatis 提供了注解,@InsertProvider, ...