springboot 引入maven
<dependency>
<!-- Include the sdk as a dependency -->
<groupId>com.microsoft.graph</groupId>
<artifactId>microsoft-graph</artifactId>
<version>5.62.0</version>
</dependency>
<dependency>
<!-- This dependency is only needed if you are using the TokenCredentialAuthProvider -->
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.4.1</version>
</dependency>
azure:
clientId: xxxx #clientId
clientSecret: xxxxx #clientSecret
tenantId: xxxx #租户ID
import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.microsoft.graph.authentication.TokenCredentialAuthProvider;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class GraphConfig {
@Value("${azure.clientId}")
private String clientId;
@Value("${azure.clientSecret}")
private String clientSecret;
@Value("${azure.tenantId}")
private String tenantId;
@Bean
public TokenCredentialAuthProvider tokenCredentialAuthProvider() {
ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder()
.clientId(clientId)
.clientSecret(clientSecret)
.tenantId(tenantId)
.build();
return new TokenCredentialAuthProvider(clientSecretCredential);
}
}
import com.microsoft.graph.authentication.TokenCredentialAuthProvider;
import com.microsoft.graph.core.ClientException;
import com.microsoft.graph.models.User;
import com.microsoft.graph.requests.GraphServiceClient;
import com.microsoft.graph.requests.OAuth2PermissionGrantCollectionWithReferencesPage;
import com.microsoft.graph.requests.UserCollectionPage;
import com.ydzx.ydoaspringboot.config.APIException;
import com.ydzx.ydoaspringboot.config.AppCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/microsoft")
public class MicroSoftController {
@Autowired
private TokenCredentialAuthProvider authProvider;
@PostMapping("/users")
public List<User> getUsers() {
UserCollectionPage users = null;
try {
GraphServiceClient graphClient = GraphServiceClient.builder()
.authenticationProvider(authProvider)
.buildClient();
// 根据邮箱查询用户信息
users = graphClient.users()
.buildRequest()
.filter("imAddresses/any(i:i eq 'xx@qq.com')")
.get();
// 获取到用户ID
System.out.println("USER ID: " + users.getCurrentPage().get(0).id);
// 通过用户ID获取授权列表
OAuth2PermissionGrantCollectionWithReferencesPage oauth2PermissionGrants = graphClient.users(users.getCurrentPage().get(0).id).oauth2PermissionGrants()
.buildRequest()
.get();
System.out.println(oauth2PermissionGrants.toString());
} catch (ClientException e) {
e.printStackTrace();
throw new APIException(AppCode.APP_ERROR, "调用Microsoft接口异常...");
}
return users.getCurrentPage();
}
}