首先,支持应用权限(client_credentials flow)在线上传文件到Sharepoint。
ClientCredentialProvider authProvider = new ClientCredentialProvider(
clientId,
scopes,
clientSecret,
tenant,
endpoint);
IGraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider(authProvider).buildClient();
byte[] stream = Base64.getDecoder().decode("The contents of the file goes here.");
graphClient.users("{userId}").drive().items("{item-id}")
.buildRequest()
.put(stream);
但是如果在生产环境中不能授予应用权限File.ReadWrite.All
,并且不能在daemon app中实现交互式登录,则应该考虑ROPC flow。
注意有一个警告:
Microsoft 建议您不要使用 ROPC 流程。在大多数情况下,可以使用并推荐更安全的替代方案。此流程需要对应用程序高度信任,并带有其他流程中不存在的风险。只有在无法使用其他更安全的流程时,您才应该使用此流程。
请参阅用户名/密码提供者。
UsernamePasswordProvider authProvider = new UsernamePasswordProvider(
clientId,
scopes,
username,
password);
IGraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider(authProvider).buildClient();
byte[] stream = Base64.getDecoder().decode("The contents of the file goes here.");
graphClient.me().drive().items("{item-id}")
.buildRequest()
.put(stream);