Microsoft graph api Microsoft图形API内容401未经授权

Microsoft graph api Microsoft图形API内容401未经授权,microsoft-graph-api,Microsoft Graph Api,我正在使用客户端id和密码进行身份验证 String url = String.format("https://login.microsoftonline.com/%s/oauth2/token", tenantContext); AuthenticationContext context = new AuthenticationContext(url, true, ForkJoinPool.commonPool()); AuthenticationResult result = context

我正在使用客户端id和密码进行身份验证

String url = String.format("https://login.microsoftonline.com/%s/oauth2/token", tenantContext);
AuthenticationContext context = new AuthenticationContext(url, true, ForkJoinPool.commonPool());
AuthenticationResult result = context.acquireToken("https://graph.microsoft.com", new ClientCredential(clientId, clientSecret), null).get();     
String token = result.getAccessTokenType() + " " + result.getAccessToken();
我的应用程序勾选了所有权限框,使用上面的令牌,我可以列出用户并遍历他们的驱动器和文件夹。我可以从中访问内容
它在位置标头中返回另一个URL。但是,当我尝试获取该URL时,它会返回401个未经授权的URL。

graph.microsoft.com上是否也有另一个URL?如果没有,那么您需要为该URL获取一个新的身份验证令牌,然后在下载请求中使用它

就像您已经在使用graph.microsoft.com一样,但是使用另一个服务器名称:

AuthenticationResult=context.acquireToken(“https://onedrive-server-name,新的ClientCredential(clientId,clientSecret),null);

graph.microsoft.com上是否也有其他URL?如果没有,那么您需要为该URL获取一个新的身份验证令牌,然后在下载请求中使用它

就像您已经在使用graph.microsoft.com一样,但是使用另一个服务器名称:

AuthenticationResult=context.acquireToken(“https://onedrive-server-name,新的ClientCredential(clientId,clientSecret),null);

确保已添加以下权限: Files.ReadAll或Files.ReadWriteAll 撤消应用访问权限,然后重试()


但是“@microsoft.graph.downloadUrl”应该是开箱即用的,也许您在库设置中禁用了脱机访问?

请确保您添加了以下权限: Files.ReadAll或Files.ReadWriteAll 撤消应用访问权限,然后重试()


但是“@microsoft.graph.downloadUrl”应该是现成的,也许您在“库设置”中禁用了脱机访问?

我通过登录管理员用户并从中获取刷新令牌,成功地从用户下载了内容

然后可以使用adal4j兑换刷新令牌:

AuthenticationContext context = new AuthenticationContext(url, true, ForkJoinPool.commonPool());
AuthenticationResult result = context.acquireTokenByRefreshToken(refreshToken, new ClientCredential(clientId, clientSecret), "https://graph.microsoft.com", null).get();
String token = result.getAccessTokenType() + " " + result.getAccessToken();
使用此访问令牌,您可以通过以下方式获取文件内容:
https://graph.microsoft.com/v1.0/drives/{driveid}/items/{itemid}/content


还有一个重要的额外步骤-管理员用户必须添加为您正在访问其内容的用户的网站集所有者。这在中进行了描述。

我通过登录管理员用户并从中获取刷新令牌,成功地从用户下载了内容

然后可以使用adal4j兑换刷新令牌:

AuthenticationContext context = new AuthenticationContext(url, true, ForkJoinPool.commonPool());
AuthenticationResult result = context.acquireTokenByRefreshToken(refreshToken, new ClientCredential(clientId, clientSecret), "https://graph.microsoft.com", null).get();
String token = result.getAccessTokenType() + " " + result.getAccessToken();
使用此访问令牌,您可以通过以下方式获取文件内容:
https://graph.microsoft.com/v1.0/drives/{driveid}/items/{itemid}/content


还有一个重要的额外步骤-管理员用户必须添加为您正在访问其内容的用户的网站集所有者。这在中进行了描述。

我尝试了位置url资源的令牌-
https://{tenant}-my.sharepoint.com
,但仍然得到了401。在
https://manage.windowsazure.com
我已将Graph、O365 Sharepoint Online和Azure AD添加到我的应用程序中,并具有所有读取权限。我尝试了位置url资源的令牌-
https://{tenant}-my.Sharepoint.com
,但仍然获得401。在
https://manage.windowsazure.com
我已将Graph、O365 Sharepoint Online和Azure AD添加到我的应用程序中,并具有所有读取权限。或者,项目json包含以下格式的字段:
“@microsoft.Graph.downloadUrl”:“https://{tenant}-my.Sharepoint.com/personal/{user}{tenant}”_在microsoft_com/_layouts/15/download.aspx?UniqueId=…&access_token=…&prooftoken=…“
,看起来您应该能够访问,但这也不起作用。或者,json项包括一个字段,格式为:
“@microsoft.graph.downloadUrl:“https://{tenant}-my.sharepoint.com/personal/{user}{tenant}”_在Microsoft_com/_layouts/15/download.aspx?UniqueId=…&access_token=…&prooftoken=…“
这看起来似乎你应该能够访问,但也不起作用。我没有机会下载
ClientCredential
asymmetrickeycrediredential
,甚至使用完全登录的刷新令牌。我得到了
@microsoft.graph.downloadUrl
,然后得到了401。您认为下载在哪里可能被禁用?我没有幸使用
ClientCredential
asymmetrickeycrediredential
下载,甚至使用完全登录的刷新令牌。我得到了
@microsoft.graph.downloadUrl
,然后得到了401。你认为在哪里可以禁用下载?