测试 /etc/profile配置 export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin 使用update-alternatives切换JAVA hadoop@note50064:~$ which java /usr/bin/java hadoop@note50064:~$ sudo update-alternatives --config java There are 2 choices for the alternative . Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/java-7-oracle/jre/bin/java 1072 auto mode * 1 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 manual mode 2 /usr/lib/jvm/java-7-oracle/jre/bin/java 1072 manual mode Press enter to keep the current choice[*], or type selection number: hadoop@note50064:~$ ls -l /usr/bin/java lrwxrwxrwx 1 root root 22 Nov 21 03:26 /usr/bin/java -> /etc/alternatives/java hadoop@note50064:~$ ls -l /etc/alternatives/java lrwxrwxrwx 1 root root 46 Nov 1 01:44 /etc/alternatives/java -> /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java hadoop@note50064:~$ java -version java version "1.
一开始查看OneDrive文档Quota facet,,发现里面介绍的是OneDrive存储容量配额,跟API访问速率限制没有关系。除此之外,没有发现任何相关信息。 OneDrive文档Error response里面,看到如下跟访问速率限制相关的错误:
Status code: 429 (Too Many Requests)和509 (Bandwidth LimitExceeded) The code property: activityLimitReached (The app or user hasbeen throttled) Detailed error code: throttledRequest (Too many requests)
为OneDrive注册自己的应用 Registering your app for OneDrive API里面有提到,平台支持web和移动应用两种,而默认情况下是web应用,需要一或多个跳转URI。对于原生应用,可以选择移动应用。选择移动应用后跳转URI则变成urn:ietf:wg:oauth:2.0:oob(带外认证)了,正是我想要的结果!
OneDrive认证 OneDrive authentication and sign-in有个按钮可以获得测试Token,无需注册新的应用就可以请求到与登录账户绑定的、一个有效期1小时的开发者Token。从https://dev.onedrive.com/auth/get-token.js中我们可以看到其所用的http请求为TokenFlow,其跳转URI设为https://dev.onedrive.com/auth/callback.htm。而 OneDrive authentication and sign-in 中提到对于移动应用和桌面应用,跳转URI应设为https://login.live.com/oauth20_desktop.srf (注:使用urn:ietf:wg:oauth:2.0:oob的话,MSA连响应都没有)。
Token Flow测试 HTTP GET请求如下:
https://login.live.com/oauth20_authorize.srf?client_id=b9aaf3be-6892-42a5-8a04-4a87bc28ce7b&scope=onedrive.readonly+wl.signin&response_type=code&redirect_uri=https://login.live.com/oauth20_desktop.srf 响应如下,认证失败:
https://login.live.com/oauth20_desktop.srf?lc=1033#error=unsupported_response_type&error_description=The+provided+value+for+the+input+parameter+'response_type'+is+not+allowed+for+this+client.+Expected+value+is+'code'. 找了很久微软的帖子,也没说为什么Token Flow不要使,一直纠结是微软不支持还是我配置有问题。后来,看了RFC6749 The OAuth 2.0 Authorization Framework,才明白Token Flow就是规范里的Implicit GrantFlow。如果我的应用配置为web应用,是可以看到Allow ImplicitFlow选择框的。好吧,当选择移动应用时微软不支持Token Flow,我的配置没问题!!!
Code Flow测试 用于用户登录的HTTP GET请求如下: https://login.live.com/oauth20_authorize.srf?client_id=b9aaf3be-6892-42a5-8a04-4a87bc28ce7b&scope=onedrive.readonly+wl.signin&response_type=token&redirect_uri=https://login.live.com/oauth20_desktop.srf 请求用户授权:此时浏览器上地址变为: https://account.live.com/Consent/Update?ru=https://login.live.com/oauth20_authorize.srf?lc=1033&client_id=b9aaf3be-6892-42a5-8a04-4a87bc28ce7b&scope=onedrive.readonly+wl.signin&response_type=code&redirect_uri=https://login.live.com/oauth20_desktop.srf&uaid=78...e6&pid=...16&mkt=EN-US&scft=DSA...hfC&contextid=7F...D6&mkt=EN-US&uiflavor=host&id=27...69&uaid=78...e6&client_id=00...42&rd=none&scope=&cscope=onedrive.readonly+wl.signin 最终跳转的地址包含了code参数: 获取访问令牌的HTTP POST请求包含上面获得的code参数: POST https://login.live.com/oauth20_token.srf Content-Type: application/x-www-form-urlencoded client_id=b9aaf3be-6892-42a5-8a04-4a87bc28ce7b&redirect_uri=https://login.live.com/oauth20_desktop.srf&code=M9...5e-b...a-e...5-6685-d...06&grant_type=authorization_code 在OneDrive API中使用获得的访问令牌: 参考 Getting started with OneDrive API SDKs for OneDrive integration Registering your app for OneDrive API OneDrive authentication and sign-in Sign-in Microsoft Account & Azure AD users in a single app Develop with the OneDrive API getting #error=unsupported_response_type&error_description=AADSTS70005: with token request
OneDrive与OneDrive for Business的区别 OneDrive与OneDrive for Business名字接近,如果认为是个人版和商业版的区别,OneDrive forBusiness在OneDrive基础上增加一些商业高级功能,那就没有正确理解二者的区别。
OneDrive(以前称之为SkyDrive)是微软提供的云端私人存储,通过Microsoft账户或Outlook.com获得。使用OneDrive在云上存储文档、图片和其他文件,可以共享给好友,甚至内容协作。可以随意决定你自己的使用方式。 OneDrive forBusiness是用于商业目的的在线存储,它既可以在微软云上也可以在组织/企业的SharePoint服务器上。OneDrive forBusiness是Office365或SharePoint服务器的主要组成部分,提供存储、共享和同步团队或项目工作文档的地方。你的OneDrive forBusiness由你的工作组织/企业管理,以便进行工作文档协作。你的工作组织/企业的网站集管理员控制你对文档库的权限。 功能桌面同步- Windows PC- Mac OS(Soon)移动应用- Windows Tablet- Android- iOS- Windows Phone- XBox在浏览器内创建/编辑Office文档与桌面版Office 集成实时协同编辑Office文档文档版本和历史信息- 简单自动创建版本和版本恢复- 版本管理(主次版本或仅主版本,手动创建版本需要checkout选项和其他高级版本选项)多重身份认证支持审计与报告
用于细颗粒度控制的高级管理功能
审批工作流使用SharePoint Designer创建定制工作流对文档创建列添加自己的元数据高级安全管理对内容创建视图(可保存视图、过滤器等等)创建列表进行数据管理(通告、任务、联系人等等)保留策略(取决于SharePoint计划)文档模板eDiscoverySharePoint提供的功能SSO/ADFS/Directory同步支持内建标准一致性存储容量5GB/15GB1TB/5TB Office 365 Office 365是一套用于个人、教育或商业活动的云服务。商业和企业计划可提供一套提高生产效率的产品。使用Office365,可以获得的Office应用(Word、Excel、PowerPoint、OneNote、Outlook和Publisher),以及50GB邮箱容量、用于企业即时消息、音视频电话和web会议的Skypefor Business、作为企业社交网络的Yammer、用于文件管理的SharePoint及1TB的OneDrive存储。
参考 OneDrive for Business vs OneDrive – Know the difference OneDrive, OneDrive for Business, and Office 365: What’s Best? What is OneDrive for Business?
Ultimate Guide in choosing between OneDrive, OneDrive for Business and Office 365