Jua*_*uan 12 sharepoint azure office365 onedrive
我一直在尝试根据OneDrive发行说明实现OneDrive Business API .我们已经实现了OneDrive最终用户API而没有任何问题.
第一个显而易见的事情是处理OAuth2身份验证以获取正确的令牌,首先发现{tenant} -my.sharepoint.com特定的租户OneDrive业务URI,然后获取该租户的令牌.为此目的的文件可以在这里找到.
在该教程之后,我们能够执行以下操作:
可以理解,我们在第2步,发现OneDrive for Business资源URI和向OneDrive API发出请求时遇到了问题.
与过程的这一部分的问题是,虽然我们打至api.office.com/discovery/v2.0/me/services与第一访问令牌得到资源后赎回api.office.com/discovery/,我们未进入OneDrive for Business的服务租户特定共享点URI列表.列表中的任何条目我们都会得到capability = "MyFiles" AND serviceApiVersion = "v2.0"相应的文档.实际上,列表中的任何条目在serviceEndpointUri中都具有{tenant} -my.sharepoint.com结构.这是我回来的JSON响应.我删除了一些敏感数据:
{
"@odata.context" : "https://api.office.com/discovery/v2.0/me/$metadata#allServices",
"value" : [ {
"capability" : "Directory",
"providerName" : "Microsoft",
"serviceAccountType" : 2,
"serviceApiVersion" : "",
"serviceEndpointUri" : "http://azure.microsoft.com/",
"serviceName" : "Microsoft Azure",
"serviceResourceId" : null
}, {
"capability" : "MyFiles",
"providerName" : "Microsoft",
"serviceAccountType" : 2,
"serviceApiVersion" : "",
"serviceEndpointUri" : "http://www.microsoft.com/en-us/office365/online-software.aspx",
"serviceName" : "Office 365 SharePoint",
"serviceResourceId" : null
}, {
"capability" : "RootSite",
"providerName" : "Microsoft",
"serviceAccountType" : 2,
"serviceApiVersion" : "",
"serviceEndpointUri" : "http://www.microsoft.com/en-us/office365/online-software.aspx",
"serviceId" : "O365_SHAREPOINT",
"serviceName" : "Office 365 SharePoint",
"serviceResourceId" : null
}, {
"capability" : "MyFiles",
"providerName" : "Microsoft",
"serviceAccountType" : 1,
"serviceApiVersion" : "",
"serviceEndpointUri" : "https://g.live.com/8seskydrive/HomePageUrl",
"serviceName" : "OneDrive",
"serviceResourceId" : null
} ]
}
Run Code Online (Sandbox Code Playgroud)
这个问题是,如果我登录到我的portal.office.com并检查我的sharepoint网址,它配置得很好,我可以看到{tenant} -my.sharepoint.com URI.
除了我无法发现正确的租户共享点URI,如果我硬编码URL以使用我的租户共享点URI兑换下一个访问令牌请求,我将获得访问令牌,但是当我想要拨打电话时,例如或任何其他端点即使刚刚获得令牌,我也会在每次通话中获得401 Unauthorize响应.这是握手示例.我隐藏了敏感数据:https://{tenant}-my.sharepoint.com/drive/root
curl -v 'https://{tenant}-my.sharepoint.com/drives' -H 'Authorization: Bearer TOKEN_ACQUIRED'
Connected to {tenant}-my.sharepoint.com port 443
GET /drives HTTP/1.1
Host: {tenant}-my.sharepoint.com
Authorization: Bearer TOKEN_ACQUIRED
HTTP/1.1 401 Unauthorized
Run Code Online (Sandbox Code Playgroud)
你能告诉我这件事吗?我的租户中是否缺少某些配置?我的Azure AD应用程序中是否缺少某些配置?
顺便说一下,我的App上的权限范围我在每次兑换中都有AllSites.FullControl AllSites.Manage MyFiles.Write Sites.Search.All TermStore.ReadWrite.All User.Read.All.我认为我有权限正确设置.
最好,
项目清单
小智 -1
可能有点晚了,但这篇博客文章介绍了如何使用 OneDrive API 和 OneDrive for Business API 的方法完全相同。下面是一个快速的 Java 代码片段:
CloudRail.setAppKey("[CloudRail License Key]");
// CloudStorage cs = new OneDrive(redirectReceiver, "[clientIdentifier]", "[clientSecret]", "[redirectUri]", "[state]");
CloudStorage cs = new OneDriveBusiness(redirectReceiver, "[clientID]", "[clientSecret]", "[redirectUri]", "[state]");
new Thread() {
@Override
public void run() {
cs.createFolder("/TestFolder");
InputStream stream = null;
try {
stream = getClass().getResourceAsStream("Data.csv");
long size = new File(getClass().getResource("Data.csv").toURI()).length();
cs.upload("/TestFolder/Data.csv", stream, size, false);
} catch (Exception e) {
// TODO: handle error
} finally {
// TODO: close stream
}
}
}.start();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
845 次 |
| 最近记录: |