我试着用Office 365统一的API (预览版)做一些有趣的事情,并在授权上停留在当下。我用我需要的所有权限制作了应用程序

我正在尝试用URL "id={CLIENT_ID}&resource=https://graph.microsoft.com/“登录用户
每件事都很好。
我甚至可以通过对access_token的请求获得所有作用域的https://login.windows.net/common/oauth2/token。

但!我有问题,我不能得到任何关于用户的信息,也得不到他的文件。
我试着提出这样的要求:

我总是在未经授权的情况下获得HTTP状态401。
我做错了什么?
还询问使用统一API的可能性。我的目标是上传大文件(高达1GB)。统一的API有可能吗?我在文档中找不到任何东西,但我发现使用OneDrive for Business是不可能的(最大文件大小为100 in )。
发布于 2015-07-31 03:36:10
所以今天早些时候一直在努力解决同样的问题:总是有401个未经授权的错误或其他错误。然后我遇到了这样的答案:Building a multi-tenant app for SharePoint Online O365
就是这样:这是非常违反直觉的,但答案是,在获得了发现URL的令牌并执行服务发现之后,您需要为要调用的每个serviceResourceId获取令牌。这里有两个非常重要的观点,即几乎8个小时的阅读文档并没有明确说明。
每个服务资源ID都有一个不同的令牌
第一点是非常令人困惑的:我假设是这样做的,因为单个租户应用程序是在单独的集群上运行的,而微软选择了不使用单一的授权服务。每一个执行多租户操作的其他实现(例如,Google实现)都会为您提供一个令牌,它将您的所有权限封装在一个球中。
可以使用相同的代码多次调用令牌检索服务。
这是难以置信的违反直觉的(我是故意使用粗体大写的)。在互联网上其他任何地方都没有其他OAuth2服务(我亲自为30个OAuth2实现编写了代码),您可以用相同的代码多次调用令牌检索服务,而不会收到错误。这完全违背了所有的默认预期,这是一个主要的文档失败,它没有更清楚地说明它偏离了标准实践。
我要再说一遍:不,在整个互联网上,您实际上可以多次使用相同的OAuth2代码来检索访问令牌。这应该在文档中显着地显示出来,而不是。
如果您继续遇到此问题,则应使用返回的OAuth2代码进行此操作:
步骤3中的代码实际上将授予您访问所需的租户端点的权限。3.
发布于 2015-07-28 10:48:14
我将尝试将"Accept“头更改为”application/json;odata.data=minimal“。odata.metadata=none未出现在统一API的受支持MIME类型列表中。
Fiddler 'application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false,application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=true,application/json;odata.metadata=minimal;odata.streaming=true,application/json;odata.metadata=minimal;odata.streaming=false;IEEE754Compatible=false,application/json;odata.metadata=minimal;odata.streaming=false;IEEE754Compatible=true,application/json;odata.metadata=minimal;odata.streaming=false,application/json;odata.metadata=minimal;IEEE754Compatible=false,application/json;odata.metadata=minimal;IEEE754Compatible=true,application/json中返回的受支持类型;odata.元数据=minimal,application/json;odata.metadata=full;odata.streaming=true;application/json;odata.metadata=full;odata.streaming=true;IEEE754Compatible=true,application/json;odata.metadata=full;odata.streaming=true,application/json;odata.metadata=full;odata.streaming=false;IEEE754Compatible=false,application/json;odata.metadata=full;odata.streaming=false;IEEE754Compatib...‘IEEE754Compatible=false不匹配任何可接受的MIME类型'application/json;odata=verbose‘
https://stackoverflow.com/questions/31640963
复制相似问题