Я хочу прочитать и отправить электронную почту с помощью Microsoft Graph API. Я пытался использовать DeviceCodecredentials, и они работают нормально, но я хочу прочитать электронные письма без какого -либо взаимодействия с пользователем в бэкэнде. Используя DeviceCodecredentials, он просит меня входить в систему, используя мой идентификатор электронной почты и ввести предоставленный код.
ниже i код, который я написал с помощью Clientsecretcredentials, которые дают мне ошибку ниже. < /P>
Exception in thread "main" java.lang.RuntimeException: Unable to get access token
at com.eclerx.email.AccessProvider.accessToken(AccessProvider.java:30)
at com.eclerx.email.AuthenticationBuilder2.main(AuthenticationBuilder2.java:55)
Caused by: java.util.concurrent.ExecutionException:
com.microsoft.aad.msal4j.MsalServiceException: AADSTS1002012: The provided value for scope
User.read openid profile offline_access Mail.Read is not valid. Client credential flows must
have a scope value with /.default suffixed to the resource identifier (application ID URI).
Trace ID: ac0c217d-72c7-4ba0-9472-16c711ceea00
Correlation ID: 4d9f5a16-e2e6-4c26-a30e-40e3aa89d53b
Timestamp: 2022-08-10 13:15:35Z
at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
at com.eclerx.email.AccessProvider.accessToken(AccessProvider.java:27)
... 1 more
Caused by: com.microsoft.aad.msal4j.MsalServiceException: AADSTS1002012: The provided value
for scope User.read openid profile offline_access Mail.Read is not valid. Client credential
flows must have a scope value with /.default suffixed to the resource identifier (application
ID URI).
Trace ID: ac0c217d-72c7-4ba0-9472-16c711ceea00
Correlation ID: 4d9f5a16-e2e6-4c26-a30e-40e3aa89d53b
Timestamp: 2022-08-10 13:15:35Z
at
com.microsoft.aad.msal4j.MsalServiceExcepti
onFactory.fromHttpResponse(MsalServiceExceptionFactory.java:45)
at
< /code>
код, как ниже < /p>
import java.util.Arrays;
import java.util.List;
import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.identity.DeviceCodeCredential;
import com.azure.identity.DeviceCodeCredentialBuilder;
import com.microsoft.graph.authentication.TokenCredentialAuthProvider;
import com.microsoft.graph.models.Message;
import com.microsoft.graph.models.User;
import com.microsoft.graph.requests.GraphServiceClient;
import com.microsoft.graph.requests.MessageCollectionPage;
import okhttp3.Request;
public class AuthenticationBuilder2 {
private static final String CLIENT_ID = "*************";
private static final String CLIENT_SECRET_ID = "**************";
private static final String CLIENT_SECRET = "****************";
private static final String AUTH_TENANT = "*************";
private static final List graphApiScopes = Arrays.asList("Mail.Read","User.read");
public AuthenticationBuilder2() {
}
public static AccessProvider initializeGraphForUserAuth() {
ClientSecretCredential clientSecretCredential =
new ClientSecretCredentialBuilder()
.clientId(CLIENT_ID)
.clientSecret(CLIENT_SECRET)
.tenantId(AUTH_TENANT)
.build();
/*final DeviceCodeCredential deviceCodeCred = new DeviceCodeCredentialBuilder()
.clientId(CLIENT_ID)
.tenantId(AUTH_TENANT)
.challengeConsumer(challange -> System.out.println(challange.getMessage()))
.build();*/
TokenCredentialAuthProvider tokenCredentialAuthProvider = new TokenCredentialAuthProvider(graphApiScopes, clientSecretCredential);
//TokenCredentialAuthProvider tokenCredentialAuthProvider = new TokenCredentialAuthProvider(graphApiScopes, deviceCodeCred);
GraphServiceClient graphServiceClient = GraphServiceClient.builder()
.authenticationProvider(tokenCredentialAuthProvider)
.buildClient();
return new AccessProvider(graphServiceClient, tokenCredentialAuthProvider);
}
public static void main(String[] args) {
AccessProvider accessProvider = AuthenticationBuilder.initializeGraphForUserAuth();
// get token
System.out.println("token : " + accessProvider.accessToken());
System.out.println(accessProvider.getServiceClient().users());
User user = accessProvider.getServiceClient().me().buildRequest().get();
System.out.println("My UserName :: "+user.displayName);
final MessageCollectionPage messagePage = accessProvider.getServiceClient().me().messages()
.buildRequest().top(3).select("subject").get();
List messageList = messagePage.getCurrentPage();
for(Message msg : messageList) {
System.out.println("Subject -> "+msg.subject);
}
}
Я хочу прочитать и отправить электронную почту с помощью Microsoft Graph API. Я пытался использовать DeviceCodecredentials, и они работают нормально, но я хочу прочитать электронные письма без какого -либо взаимодействия с пользователем в бэкэнде. Используя DeviceCodecredentials, он просит меня входить в систему, используя мой идентификатор электронной почты и ввести предоставленный код. ниже i код, который я написал с помощью Clientsecretcredentials, которые дают мне ошибку ниже. < /P> [code]Exception in thread "main" java.lang.RuntimeException: Unable to get access token at com.eclerx.email.AccessProvider.accessToken(AccessProvider.java:30) at com.eclerx.email.AuthenticationBuilder2.main(AuthenticationBuilder2.java:55) Caused by: java.util.concurrent.ExecutionException: com.microsoft.aad.msal4j.MsalServiceException: AADSTS1002012: The provided value for scope User.read openid profile offline_access Mail.Read is not valid. Client credential flows must have a scope value with /.default suffixed to the resource identifier (application ID URI). Trace ID: ac0c217d-72c7-4ba0-9472-16c711ceea00 Correlation ID: 4d9f5a16-e2e6-4c26-a30e-40e3aa89d53b Timestamp: 2022-08-10 13:15:35Z at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908) at com.eclerx.email.AccessProvider.accessToken(AccessProvider.java:27) ... 1 more Caused by: com.microsoft.aad.msal4j.MsalServiceException: AADSTS1002012: The provided value for scope User.read openid profile offline_access Mail.Read is not valid. Client credential flows must have a scope value with /.default suffixed to the resource identifier (application ID URI). Trace ID: ac0c217d-72c7-4ba0-9472-16c711ceea00 Correlation ID: 4d9f5a16-e2e6-4c26-a30e-40e3aa89d53b Timestamp: 2022-08-10 13:15:35Z at com.microsoft.aad.msal4j.MsalServiceExcepti onFactory.fromHttpResponse(MsalServiceExceptionFactory.java:45) at < /code> код, как ниже < /p> import java.util.Arrays; import java.util.List;
Я хочу прочитать и отправить электронную почту с помощью Microsoft Graph API. Я пытался использовать DeviceCodecredentials, и они работают нормально, но я хочу прочитать электронные письма без какого -либо взаимодействия с пользователем в бэкэнде....
Я хочу прочитать и отправить электронную почту с помощью Microsoft Graph API. Я пытался использовать DeviceCodecredentials, и они работают нормально, но я хочу прочитать электронные письма без какого -либо взаимодействия с пользователем в бэкэнде....
Я хочу прочитать и отправить электронную почту с помощью Microsoft Graph API. Я пытался использовать DeviceCodecredentials, и они работают нормально, но я хочу прочитать электронные письма без какого -либо взаимодействия с пользователем в бэкэнде....
Я хочу прочитать и отправить электронную почту с помощью Microsoft Graph API. Я пытался использовать DeviceCodecredentials, и они работают нормально, но я хочу прочитать электронные письма без какого -либо взаимодействия с пользователем в бэкэнде....
Я хочу прочитать и отправить электронную почту с помощью Microsoft Graph API. Я пытался использовать DeviceCodecredentials, и они работают нормально, но я хочу прочитать электронные письма без какого -либо взаимодействия с пользователем в бэкэнде....