Не удалось получить события с помощью me.events () после входа в систему с помощью msgraph-sdk- java - PullRequest
0 голосов
/ 04 февраля 2020

Мой проект похож на приложение Microsoft Teams, но только в чате. Основываясь на документе https://github.com/microsoftgraph/msgraph-sdk-java, у меня есть реализация, как показано ниже. С помощью этой реализации я могу без проблем вызывать getDrives () и getAllMyPages () и получать содержимое; Однако вызов getEvents () получил «Доступ запрещен. Проверяет учетные данные и повторяет попытку ». Более того, после вызова login () мой статус присутствия остается не в сети. Поддерживается быть доступным. Может ли кто-нибудь указать мне, что я пропустил или сделал не так.

public class MsGraphEndpoint {
    private static final Logger LOGGER = LoggerFactory.getLogger(MsGraphEndpoint.class);
    IGraphServiceClient graphClient;
    private IUserRequestBuilder me;

    private String accessToken;

    public MsGraphEndpoint(String accessToken) {
        this.accessToken = accessToken; 
    }

    public Result login() {
        JsonArray result = new JsonArray();
        try {
                AuthorizationOnBehalfUserProvider provider = new AuthorizationOnBehalfUserProvider(accessToken);
                graphClient = GraphServiceClient.builder().authenticationProvider(provider).buildClient();
                me = graphClient.me();
                JsonObject ret = new JsonObject();
                ret.addProperty("result", "success");
                result.add(ret);
        } catch(Exception ex) {
            LOGGER.error("There is an error during login. Error: ", ex);
            return new Result(ObjectMapperUtils.errorJsonString("There is an error during login. Error: " + ex.getMessage()), Result.IS_ERROR);
        }
        return new Result(result.toString(), !Result.IS_ERROR);
    }

    public Result getDrives() {      
        JsonArray result = new JsonArray();
        try {
            IDriveCollectionPage dp = me.drives().buildRequest().get();
            while(dp != null) {
                dp.getCurrentPage().forEach((drive) -> {
                    result.add(drive.getRawObject());
                });
                IDriveCollectionRequestBuilder builder = dp.getNextPage();
                if(builder == null) break;
                dp = builder.buildRequest().get();
            }
        } catch(Exception ex) {
            return new Result(ObjectMapperUtils.errorJsonString("There is an error during getDrive. Error: " + ex.getMessage()), Result.IS_ERROR);
        }
        return new Result(result.toString(), !Result.IS_ERROR);
    }

    public Result getAllMyPages() {        
        JsonArray result = new JsonArray();
        try {
            IMessageCollectionRequestBuilder messages = me.messages();
            IMessageCollectionRequest request = messages.buildRequest();
            IMessageCollectionPage page = request.get();
            int count = 0;
            while(page != null) {
                for(Message message : page.getCurrentPage()) {
                    JsonObject rawObject = message.getRawObject();
                    result.add(rawObject);
                    LOGGER.info(rawObject.toString());
                }
                IMessageCollectionRequestBuilder builder = page.getNextPage();
                if(builder == null)break;
                page = builder.buildRequest().get();
            }
        } catch(Exception ex) {
            return new Result(ObjectMapperUtils.errorJsonString("There is an error during getAllMyPages. Error: " + ex.getMessage()), Result.IS_ERROR);
        }
        return new Result(result.toString(), !Result.IS_ERROR);
    }

    public Result getEvents() {
        JsonArray result = new JsonArray();
        try {
            IEventCollectionRequestBuilder eb = me.events();
            IEventCollectionRequest requests = eb.buildRequest();
            IEventCollectionPage ep = requests.get();
            while(ep != null) {
                for(Event event : ep.getCurrentPage()) {
                    result.add(event.getRawObject());
                }
                IEventCollectionRequestBuilder builder = ep.getNextPage();
                if(builder == null) break;
                ep = builder.buildRequest().get();
            }
        } catch(Exception ex) {
            return new Result(ObjectMapperUtils.errorJsonString("There is an error during login. Error: " + ex.getMessage()), Result.IS_ERROR);
        }
        return new Result(result.toString(), !Result.IS_ERROR);
    }
}
...