API Microsoft Graph с Springboot для чтения почты OutlookAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 API Microsoft Graph с Springboot для чтения почты Outlook

Сообщение Anonymous »

Разработчики, мне нужно решение для чтения почты Outlook с помощью Springboot с помощью client_secret. Я пробовал использовать несколько процессов, но безуспешно. Во время отладки у меня есть токен доступа, но токен обновления, размер токена идентификатора был равен 0. Это вызывает у меня проблему ниже:
Сообщение об ошибке: Доступ запрещен. Проверьте учетные данные и повторите попытку.
GET https://graph.microsoft.com/v1.0/users/ ... ges?%24top =5
SdkVersion: граф-java/v4.1.0
403: запрещено
[...]
[ Некоторая информация была сокращена для краткости. Чтобы получить более подробную информацию, включите ведение журнала отладки]
public static void initializeGraph() throws MalformedURLException, ExecutionException, InterruptedException {
Set SCOPE = new HashSet();
SCOPE.add("https://graph.microsoft.com/.default");
SCOPE.add("offline_access");

IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);

ConfidentialClientApplication cca = ConfidentialClientApplication
.builder(CLIENT_ID, credential)
.authority(AUTHORITY)
.build();

IAuthenticationResult result;
ITokenCache tokenCache = cca.tokenCache();

try {
SilentParameters silentParameters = SilentParameters
.builder(SCOPE)
.build();

// Try to acquire token silently
result = cca.acquireTokenSilently(silentParameters).get();
System.out.println(result);

} catch (Exception ex) {
if (ex.getCause() instanceof MsalException) {
ClientCredentialParameters parameters = ClientCredentialParameters
.builder(SCOPE)
.build();

// Try to acquire a token
IAuthenticationResult accessToken = cca.acquireToken(parameters).get();

System.out.println("Token retrieved from accessToken: " + accessToken.accessToken());
System.out.println("Token retrieved from idToken: " + accessToken.idToken());
System.out.println("Token retrieved from tenantProfile: " + accessToken.tenantProfile());
System.out.println("Token retrieved from expiresOnDate: " + accessToken.expiresOnDate());

TokenCredential tokenCredential = new TokenCredential() {
@Override
public Mono getToken(TokenRequestContext tokenRequestContext) {
String accessToken = accessToken.accessToken();
Instant instant = accessToken.expiresOnDate().toInstant();
com.azure.core.credential.AccessToken azureToken = new
com.azure.core.credential.AccessToken(accessToken,
instant.atOffset(ZoneId.systemDefault().getRules().getOffset(instant)));
return Mono.just(azureToken);
}
};

IAuthenticationProvider authProvider = new TokenCredentialAuthProvider(tokenCredential);

userClient = GraphServiceClient
.builder()
.authenticationProvider(authProvider)
.buildClient();
} else {
throw ex;
}
}
}

public static MessageCollectionPage getInbox() throws Exception {
initializeGraphForAppOnlyAuth();
System.out.println(userClient);
if (userClient == null) {
throw new Exception("Graph has not been initialized for user auth");
}

return userClient.users("di.a@help.com")
.mailFolders("inbox")
.messages()
.buildRequest()
.top(5)
.get();
}

public static MessageCollectionPage getInbox() throws Exception {
initializeGraphForAppOnlyAuth();
System.out.println(userClient);
if (userClient == null) {
throw new Exception("Graph has not been initialized for user auth");
}

return userClient.users("di.a@help.com")
.mailFolders("inbox")
.messages()
.buildRequest()
.top(5)
.get();
}


Подробнее здесь: https://stackoverflow.com/questions/784 ... look-mails
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»