3

I have followed the example at https://learn.microsoft.com/en-us/graph/sdks/choose-authentication-providers?tabs=Java#client-credentials-provider in order to connect an android application to Microsoft Graph API using a TokenCredentialAuthProvider. I have registered an app only application in Azure AD with the correct permissions and it works when testing from Postman.

Dependancies

implementation 'com.microsoft.graph:microsoft-graph:5.13.0'
implementation 'com.google.guava:guava:30.1.1-android'
implementation 'com.azure:azure-identity:1.2.5'

My code

        final ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder()
                .clientId(clientId)
                .clientSecret(clientSecret)
                .tenantId(tenant)
                .build();

        //new CertificateBasedAuthConfiguration()
        final TokenCredentialAuthProvider tokenCredentialAuthProvider = new TokenCredentialAuthProvider(scopes, clientSecretCredential);

        final GraphServiceClient graphClient =
                GraphServiceClient
                        .builder()
                        .authenticationProvider(tokenCredentialAuthProvider)
                        .buildClient();
        graphClient.sites(siteId).drive().items().appRoot().children().buildRequest().getAsync().thenAccept(new Consumer<DriveItemCollectionPage>() {
            @Override
            public void accept(DriveItemCollectionPage driveItemCollectionPage) {
                Timber.d(driveItemCollectionPage.toString());
            }
        }).exceptionally(new Function<Throwable, Void>() {
            @Override
            public Void apply(Throwable throwable) {
                Timber.e(throwable);
                return null;
            }
        });

But the call exits "exceptionally" because it can't resolve login.microsoftonline.com. (The phones are connected to internet and can access this site in different browsers.)

I have found others with similar problems but the most common solution seams to be that they need to configure a proxy. I do not think this is case for me.

I find these rows from the stacktrace most interesting and have tried on my local network as well as with 4G connection without any change. Any help would be appreciated.

2022-02-07 16:38:35.989 17993-18431/com.myapp E/Client: Caused by: io.netty.resolver.dns.DnsNameResolverException: [/2001:4860:4860::8844:53] failed to send a query via UDP (no stack trace available)
2022-02-07 16:38:35.989 17993-18431/com.myapp E/Client: Caused by: java.net.SocketException: Network is unreachable

Full stacktrace

2022-02-07 16:38:35.970 17993-18431/com.myapp E/Client: java.util.concurrent.CompletionException: java.io.IOException: java.util.concurrent.ExecutionException: com.microsoft.aad.msal4j.MsalClientException: reactor.core.Exceptions$ReactiveException: java.net.UnknownHostException: failed to resolve 'login.microsoftonline.com' after 2 queries 
2022-02-07 16:38:35.970 17993-18431/com.myapp E/Client:     at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:296)
2022-02-07 16:38:35.971 17993-18431/com.myapp E/Client:     at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:312)
2022-02-07 16:38:35.971 17993-18431/com.myapp E/Client:     at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:603)
2022-02-07 16:38:35.971 17993-18431/com.myapp E/Client:     at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:587)
2022-02-07 16:38:35.971 17993-18431/com.myapp E/Client:     at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:484)
2022-02-07 16:38:35.971 17993-18431/com.myapp E/Client:     at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2005)
2022-02-07 16:38:35.971 17993-18431/com.myapp E/Client:     at com.microsoft.graph.http.CoreHttpCallbackFutureWrapper.onFailure(CoreHttpCallbackFutureWrapper.java:29)
2022-02-07 16:38:35.971 17993-18431/com.myapp E/Client:     at com.google.firebase.perf.network.InstrumentOkHttpEnqueueCallback.onFailure(InstrumentOkHttpEnqueueCallback.java:63)
2022-02-07 16:38:35.971 17993-18431/com.myapp E/Client:     at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:525)
2022-02-07 16:38:35.972 17993-18431/com.myapp E/Client:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
2022-02-07 16:38:35.972 17993-18431/com.myapp E/Client:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2022-02-07 16:38:35.972 17993-18431/com.myapp E/Client:     at java.lang.Thread.run(Thread.java:923)
2022-02-07 16:38:35.972 17993-18431/com.myapp E/Client: Caused by: java.io.IOException: java.util.concurrent.ExecutionException: com.microsoft.aad.msal4j.MsalClientException: reactor.core.Exceptions$ReactiveException: java.net.UnknownHostException: failed to resolve 'login.microsoftonline.com' after 2 queries 
2022-02-07 16:38:35.972 17993-18431/com.myapp E/Client:     at com.microsoft.graph.httpcore.AuthenticationHandler.intercept(AuthenticationHandler.java:67)
2022-02-07 16:38:35.972 17993-18431/com.myapp E/Client:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
2022-02-07 16:38:35.972 17993-18431/com.myapp E/Client:     at com.microsoft.graph.httpcore.TelemetryHandler.intercept(TelemetryHandler.java:69)
2022-02-07 16:38:35.973 17993-18431/com.myapp E/Client:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
2022-02-07 16:38:35.973 17993-18431/com.myapp E/Client:     at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
2022-02-07 16:38:35.973 17993-18431/com.myapp E/Client:     at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517)
2022-02-07 16:38:35.973 17993-18431/com.myapp E/Client:     ... 3 more
2022-02-07 16:38:35.973 17993-18431/com.myapp E/Client: Caused by: java.util.concurrent.ExecutionException: com.microsoft.aad.msal4j.MsalClientException: reactor.core.Exceptions$ReactiveException: java.net.UnknownHostException: failed to resolve 'login.microsoftonline.com' after 2 queries 
2022-02-07 16:38:35.973 17993-18431/com.myapp E/Client:     at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:361)
2022-02-07 16:38:35.973 17993-18431/com.myapp E/Client:     at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1923)
2022-02-07 16:38:35.974 17993-18431/com.myapp E/Client:     at com.microsoft.graph.httpcore.AuthenticationHandler.intercept(AuthenticationHandler.java:55)
2022-02-07 16:38:35.974 17993-18431/com.myapp E/Client:     ... 8 more
2022-02-07 16:38:35.974 17993-18431/com.myapp E/Client: Caused by: com.microsoft.aad.msal4j.MsalClientException: reactor.core.Exceptions$ReactiveException: java.net.UnknownHostException: failed to resolve 'login.microsoftonline.com' after 2 queries 
2022-02-07 16:38:35.974 17993-18431/com.myapp E/Client:     at com.microsoft.aad.msal4j.HttpHelper.executeHttpRequest(HttpHelper.java:68)
2022-02-07 16:38:35.974 17993-18431/com.myapp E/Client:     at com.microsoft.aad.msal4j.AadInstanceDiscoveryProvider.httpRequest(AadInstanceDiscoveryProvider.java:175)
2022-02-07 16:38:35.974 17993-18431/com.myapp E/Client:     at com.microsoft.aad.msal4j.AadInstanceDiscoveryProvider.sendInstanceDiscoveryRequest(AadInstanceDiscoveryProvider.java:157)
2022-02-07 16:38:35.974 17993-18431/com.myapp E/Client:     at com.microsoft.aad.msal4j.AadInstanceDiscoveryProvider.doInstanceDiscoveryAndCache(AadInstanceDiscoveryProvider.java:221)
2022-02-07 16:38:35.974 17993-18431/com.myapp E/Client:     at com.microsoft.aad.msal4j.AadInstanceDiscoveryProvider.getMetadataEntry(AadInstanceDiscoveryProvider.java:56)
2022-02-07 16:38:35.975 17993-18431/com.myapp E/Client:     at com.microsoft.aad.msal4j.AuthenticationResultSupplier.getAuthorityWithPrefNetworkHost(AuthenticationResultSupplier.java:32)
2022-02-07 16:38:35.975 17993-18431/com.myapp E/Client:     at com.microsoft.aad.msal4j.AcquireTokenByAuthorizationGrantSupplier.execute(AcquireTokenByAuthorizationGrantSupplier.java:59)
2022-02-07 16:38:35.975 17993-18431/com.myapp E/Client:     at com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:59)
2022-02-07 16:38:35.975 17993-18431/com.myapp E/Client:     at com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:17)
2022-02-07 16:38:35.975 17993-18431/com.myapp E/Client:     at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1627)
2022-02-07 16:38:35.975 17993-18431/com.myapp E/Client:     at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1619)
2022-02-07 16:38:35.976 17993-18431/com.myapp E/Client:     at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:285)
2022-02-07 16:38:35.976 17993-18431/com.myapp E/Client:     at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1155)
2022-02-07 16:38:35.976 17993-18431/com.myapp E/Client:     at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1993)
2022-02-07 16:38:35.976 17993-18431/com.myapp E/Client:     at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1941)
2022-02-07 16:38:35.976 17993-18431/com.myapp E/Client:     at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
2022-02-07 16:38:35.976 17993-18431/com.myapp E/Client: Caused by: reactor.core.Exceptions$ReactiveException: java.net.UnknownHostException: failed to resolve 'login.microsoftonline.com' after 2 queries 
2022-02-07 16:38:35.976 17993-18431/com.myapp E/Client:     at reactor.core.Exceptions.propagate(Exceptions.java:392)
2022-02-07 16:38:35.977 17993-18431/com.myapp E/Client:     at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:97)
2022-02-07 16:38:35.977 17993-18431/com.myapp E/Client:     at reactor.core.publisher.Mono.block(Mono.java:1706)
2022-02-07 16:38:35.977 17993-18431/com.myapp E/Client:     at com.azure.identity.implementation.HttpPipelineAdapter.send(HttpPipelineAdapter.java:58)
2022-02-07 16:38:35.977 17993-18431/com.myapp E/Client:     at com.microsoft.aad.msal4j.HttpHelper.executeHttpRequestWithRetries(HttpHelper.java:86)
2022-02-07 16:38:35.977 17993-18431/com.myapp E/Client:     at com.microsoft.aad.msal4j.HttpHelper.executeHttpRequest(HttpHelper.java:64)
2022-02-07 16:38:35.977 17993-18431/com.myapp E/Client:     ... 15 more
2022-02-07 16:38:35.977 17993-18431/com.myapp E/Client:     Suppressed: java.lang.Exception: #block terminated with an error
2022-02-07 16:38:35.978 17993-18431/com.myapp E/Client:     at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:99)
2022-02-07 16:38:35.978 17993-18431/com.myapp E/Client:         ... 19 more
2022-02-07 16:38:35.978 17993-18431/com.myapp E/Client: Caused by: java.net.UnknownHostException: failed to resolve 'login.microsoftonline.com' after 2 queries 
2022-02-07 16:38:35.978 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:1013)
2022-02-07 16:38:35.978 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsResolveContext.tryToFinishResolve(DnsResolveContext.java:966)
2022-02-07 16:38:35.978 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:414)
2022-02-07 16:38:35.978 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsResolveContext.access$600(DnsResolveContext.java:63)
2022-02-07 16:38:35.979 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsResolveContext$2.operationComplete(DnsResolveContext.java:463)
2022-02-07 16:38:35.979 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
2022-02-07 16:38:35.979 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571)
2022-02-07 16:38:35.979 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550)
2022-02-07 16:38:35.979 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
2022-02-07 16:38:35.979 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
2022-02-07 16:38:35.979 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:609)
2022-02-07 16:38:35.980 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:117)
2022-02-07 16:38:35.980 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsQueryContext.tryFailure(DnsQueryContext.java:225)
2022-02-07 16:38:35.980 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsQueryContext.onQueryWriteCompletion(DnsQueryContext.java:162)
2022-02-07 16:38:35.980 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsQueryContext.access$200(DnsQueryContext.java:42)
2022-02-07 16:38:35.980 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsQueryContext$3.operationComplete(DnsQueryContext.java:154)
2022-02-07 16:38:35.980 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsQueryContext$3.operationComplete(DnsQueryContext.java:151)
2022-02-07 16:38:35.981 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
2022-02-07 16:38:35.981 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)
2022-02-07 16:38:35.982 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
2022-02-07 16:38:35.982 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
2022-02-07 16:38:35.982 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:609)
2022-02-07 16:38:35.983 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:117)
2022-02-07 16:38:35.983 17993-18431/com.myapp E/Client:     at io.netty.util.internal.PromiseNotificationUtil.tryFailure(PromiseNotificationUtil.java:64)
2022-02-07 16:38:35.983 17993-18431/com.myapp E/Client:     at io.netty.channel.ChannelOutboundBuffer.safeFail(ChannelOutboundBuffer.java:723)
2022-02-07 16:38:35.983 17993-18431/com.myapp E/Client:     at io.netty.channel.ChannelOutboundBuffer.remove0(ChannelOutboundBuffer.java:308)
2022-02-07 16:38:35.983 17993-18431/com.myapp E/Client:     at io.netty.channel.ChannelOutboundBuffer.remove(ChannelOutboundBuffer.java:288)
2022-02-07 16:38:35.983 17993-18431/com.myapp E/Client:     at io.netty.channel.nio.AbstractNioMessageChannel.doWrite(AbstractNioMessageChannel.java:159)
2022-02-07 16:38:35.983 17993-18431/com.myapp E/Client:     at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:941)
2022-02-07 16:38:35.984 17993-18431/com.myapp E/Client:     at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:354)
2022-02-07 16:38:35.984 17993-18431/com.myapp E/Client:     at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:905)
2022-02-07 16:38:35.984 17993-18431/com.myapp E/Client:     at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372)
2022-02-07 16:38:35.984 17993-18431/com.myapp E/Client:     at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
2022-02-07 16:38:35.984 17993-18431/com.myapp E/Client:     at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742)
2022-02-07 16:38:35.984 17993-18431/com.myapp E/Client:     at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728)
2022-02-07 16:38:35.984 17993-18431/com.myapp E/Client:     at io.netty.channel.DefaultChannelPipeline.flush(DefaultChannelPipeline.java:967)
2022-02-07 16:38:35.984 17993-18431/com.myapp E/Client:     at io.netty.channel.AbstractChannel.flush(AbstractChannel.java:242)
2022-02-07 16:38:35.985 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsNameResolver.flushQueries(DnsNameResolver.java:1173)
2022-02-07 16:38:35.985 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsResolveContext.internalResolve(DnsResolveContext.java:357)
2022-02-07 16:38:35.985 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsResolveContext.resolve(DnsResolveContext.java:211)
2022-02-07 16:38:35.985 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsNameResolver.doResolveAllUncached0(DnsNameResolver.java:1074)
2022-02-07 16:38:35.985 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsNameResolver.doResolveAllUncached(DnsNameResolver.java:1047)
2022-02-07 16:38:35.985 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsNameResolver.doResolveUncached(DnsNameResolver.java:949)
2022-02-07 16:38:35.985 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsNameResolver.doResolve(DnsNameResolver.java:891)
2022-02-07 16:38:35.986 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsNameResolver.doResolve(DnsNameResolver.java:733)
2022-02-07 16:38:35.986 17993-18431/com.myapp E/Client:     at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)
2022-02-07 16:38:35.986 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:100)
2022-02-07 16:38:35.986 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:66)
2022-02-07 16:38:35.986 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:51)
2022-02-07 16:38:35.986 17993-18431/com.myapp E/Client:     at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)
2022-02-07 16:38:35.986 17993-18431/com.myapp E/Client:     at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)
2022-02-07 16:38:35.987 17993-18431/com.myapp E/Client:     at io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)
2022-02-07 16:38:35.987 17993-18431/com.myapp E/Client:     at reactor.netty.transport.TransportConnector.doResolveAndConnect(TransportConnector.java:230)
2022-02-07 16:38:35.987 17993-18431/com.myapp E/Client:     at reactor.netty.transport.TransportConnector.lambda$connect$2(TransportConnector.java:103)
2022-02-07 16:38:35.987 17993-18431/com.myapp E/Client:     at reactor.netty.transport.TransportConnector$$ExternalSyntheticLambda6.apply(Unknown Source:8)
2022-02-07 16:38:35.987 17993-18431/com.myapp E/Client:     at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125)
2022-02-07 16:38:35.987 17993-18431/com.myapp E/Client:     at reactor.netty.transport.TransportConnector$MonoChannelPromise._subscribe(TransportConnector.java:526)
2022-02-07 16:38:35.988 17993-18431/com.myapp E/Client:     at reactor.netty.transport.TransportConnector$MonoChannelPromise.lambda$subscribe$0$reactor-netty-transport-TransportConnector$MonoChannelPromise(TransportConnector.java:446)
2022-02-07 16:38:35.988 17993-18431/com.myapp E/Client:     at reactor.netty.transport.TransportConnector$MonoChannelPromise$$ExternalSyntheticLambda0.run(Unknown Source:4)
2022-02-07 16:38:35.988 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
2022-02-07 16:38:35.988 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
2022-02-07 16:38:35.988 17993-18431/com.myapp E/Client:     at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
2022-02-07 16:38:35.988 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
2022-02-07 16:38:35.989 17993-18431/com.myapp E/Client:     at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
2022-02-07 16:38:35.989 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
2022-02-07 16:38:35.989 17993-18431/com.myapp E/Client:     at java.lang.Thread.run(Thread.java:923)
2022-02-07 16:38:35.989 17993-18431/com.myapp E/Client: Caused by: io.netty.resolver.dns.DnsNameResolverException: [/2001:4860:4860::8844:53] failed to send a query via UDP (no stack trace available)
2022-02-07 16:38:35.989 17993-18431/com.myapp E/Client: Caused by: java.net.SocketException: Network is unreachable
2022-02-07 16:38:35.989 17993-18431/com.myapp E/Client:     at sun.nio.ch.DatagramChannelImpl.send0(Native Method)
2022-02-07 16:38:35.989 17993-18431/com.myapp E/Client:     at sun.nio.ch.DatagramChannelImpl.sendFromNativeBuffer(DatagramChannelImpl.java:565)
2022-02-07 16:38:35.990 17993-18431/com.myapp E/Client:     at sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:542)
2022-02-07 16:38:35.990 17993-18431/com.myapp E/Client:     at sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:506)
2022-02-07 16:38:35.990 17993-18431/com.myapp E/Client:     at io.netty.channel.socket.nio.NioDatagramChannel.doWriteMessage(NioDatagramChannel.java:295)
2022-02-07 16:38:35.990 17993-18431/com.myapp E/Client:     at io.netty.channel.nio.AbstractNioMessageChannel.doWrite(AbstractNioMessageChannel.java:142)
2022-02-07 16:38:35.990 17993-18431/com.myapp E/Client:     at io.netty.channel.AbstractChannel$AbstractUnsafe.flush0(AbstractChannel.java:941)
2022-02-07 16:38:35.990 17993-18431/com.myapp E/Client:     at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.flush0(AbstractNioChannel.java:354)
2022-02-07 16:38:35.990 17993-18431/com.myapp E/Client:     at io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:905)
2022-02-07 16:38:35.991 17993-18431/com.myapp E/Client:     at io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1372)
2022-02-07 16:38:35.991 17993-18431/com.myapp E/Client:     at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:750)
2022-02-07 16:38:35.991 17993-18431/com.myapp E/Client:     at io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:742)
2022-02-07 16:38:35.991 17993-18431/com.myapp E/Client:     at io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:728)
2022-02-07 16:38:35.991 17993-18431/com.myapp E/Client:     at io.netty.channel.DefaultChannelPipeline.flush(DefaultChannelPipeline.java:967)
2022-02-07 16:38:35.991 17993-18431/com.myapp E/Client:     at io.netty.channel.AbstractChannel.flush(AbstractChannel.java:242)
2022-02-07 16:38:35.991 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsNameResolver.flushQueries(DnsNameResolver.java:1173)
2022-02-07 16:38:35.992 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsResolveContext.internalResolve(DnsResolveContext.java:357)
2022-02-07 16:38:35.992 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsResolveContext.resolve(DnsResolveContext.java:211)
2022-02-07 16:38:35.992 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsNameResolver.doResolveAllUncached0(DnsNameResolver.java:1074)
2022-02-07 16:38:35.992 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsNameResolver.doResolveAllUncached(DnsNameResolver.java:1047)
2022-02-07 16:38:35.992 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsNameResolver.doResolveUncached(DnsNameResolver.java:949)
2022-02-07 16:38:35.992 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsNameResolver.doResolve(DnsNameResolver.java:891)
2022-02-07 16:38:35.992 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.DnsNameResolver.doResolve(DnsNameResolver.java:733)
2022-02-07 16:38:35.993 17993-18431/com.myapp E/Client:     at io.netty.resolver.SimpleNameResolver.resolve(SimpleNameResolver.java:61)
2022-02-07 16:38:35.993 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:100)
2022-02-07 16:38:35.993 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:66)
2022-02-07 16:38:35.993 17993-18431/com.myapp E/Client:     at io.netty.resolver.dns.InflightNameResolver.resolve(InflightNameResolver.java:51)
2022-02-07 16:38:35.993 17993-18431/com.myapp E/Client:     at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:55)
2022-02-07 16:38:35.993 17993-18431/com.myapp E/Client:     at io.netty.resolver.InetSocketAddressResolver.doResolve(InetSocketAddressResolver.java:31)
2022-02-07 16:38:35.993 17993-18431/com.myapp E/Client:     at io.netty.resolver.AbstractAddressResolver.resolve(AbstractAddressResolver.java:106)
2022-02-07 16:38:35.993 17993-18431/com.myapp E/Client:     at reactor.netty.transport.TransportConnector.doResolveAndConnect(TransportConnector.java:230)
2022-02-07 16:38:35.994 17993-18431/com.myapp E/Client:     at reactor.netty.transport.TransportConnector.lambda$connect$2(TransportConnector.java:103)
2022-02-07 16:38:35.995 17993-18431/com.myapp E/Client:     at reactor.netty.transport.TransportConnector$$ExternalSyntheticLambda6.apply(Unknown Source:8)
2022-02-07 16:38:35.995 17993-18431/com.myapp E/Client:     at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125)
2022-02-07 16:38:35.995 17993-18431/com.myapp E/Client:     at reactor.netty.transport.TransportConnector$MonoChannelPromise._subscribe(TransportConnector.java:526)
2022-02-07 16:38:35.995 17993-18431/com.myapp E/Client:     at reactor.netty.transport.TransportConnector$MonoChannelPromise.lambda$subscribe$0$reactor-netty-transport-TransportConnector$MonoChannelPromise(TransportConnector.java:446)
2022-02-07 16:38:35.995 17993-18431/com.myapp E/Client:     at reactor.netty.transport.TransportConnector$MonoChannelPromise$$ExternalSyntheticLambda0.run(Unknown Source:4)
2022-02-07 16:38:35.995 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
2022-02-07 16:38:35.995 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
2022-02-07 16:38:35.995 17993-18431/com.myapp E/Client:     at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
2022-02-07 16:38:35.995 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
2022-02-07 16:38:35.996 17993-18431/com.myapp E/Client:     at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
2022-02-07 16:38:35.996 17993-18431/com.myapp E/Client:     at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
2022-02-07 16:38:35.996 17993-18431/com.myapp E/Client:     at java.lang.Thread.run(Thread.java:923)
Björn
  • 159
  • 10
  • If you can get user information by calling [this api](https://learn.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0&tabs=java#request-2), if you can get this response with your graph client, then if you can tell us which api you wanna call in your scenario? – Tiny Wang Feb 14 '22 at 05:37
  • @TinyWang Using my GraphServiceClient above the query from that API generates the same error. However identifying as a user, using the library 'com.microsoft.identity.client:msal:2.0.8' instead of as an application with TokenCredentialAuthProvider from 'com.azure:azure-identity:1.2.5' as recomended here "https://github.com/microsoftgraph/msgraph-sdk-java" works. But I need to identify as an application and call sites related apis such as the one in the question: graphClient.sites(siteId).drive().items().appRoot().children().buildRequest()... – Björn Feb 16 '22 at 09:54
  • Sorry I can't understand your requirement well. Please allow me to do some explanations here. Firstly, what you did in your code can be described as got authentication and then call the graph api. You used graph client to call the api and the issue may relate to the authentication. For ms graph api there're 2 kinds of authentication, one is authentication for a user(need users enter password to sign in first), another one is authentication for an application. And what you said `need to identify as an application and call sites related apis`, I'm afraid you need to auth your app like 2nd I say – Tiny Wang Feb 16 '22 at 12:39
  • So you need to make sure the api you wanna call support "application api permission", if you wanna call [this api](https://learn.microsoft.com/en-us/graph/api/driveitem-list-children?view=graph-rest-1.0&tabs=http#permissions), then I think it's supported. You may then refer to [this section](https://learn.microsoft.com/en-us/azure/active-directory/develop/sample-v2-code#service--daemon) to learn about how to integrate client credential flow(which is designed for auth application) to java application. Hope what I said can help. If I misunderstood in some place, I'm sorry for that.. – Tiny Wang Feb 16 '22 at 12:43
  • @TinyWang Yes you are correct. I need to authenticate as an application as I believe that I am doing above with the clientSecretCredential and tokenCredentialAuthProvider. You are also correct that I try to access one of the endpoints you link /sites/{site-id}/drive/items/{item-id}/children. On that site it says the endpoint accepts application persmissions. In fact using Postman I can access that endpoint with the same registered application I am now trying to use in Android. – Björn Feb 16 '22 at 16:06
  • On [this site](https://learn.microsoft.com/en-us/graph/sdks/choose-authentication-providers?tabs=Java#client-credentials-provider) under Client credentials provider for Android it says "not applicable". However on [this site](https://github.com/microsoftgraph/msgraph-sdk-java) is sugests TokenCredentialAuthProvider should work when adding the 'com.azure:azure-identity:1.2.5' library – Björn Feb 16 '22 at 16:09
  • Because I don't have java environment so I can't test in my side, but I think it should be supported. I have [a sample](https://stackoverflow.com/a/70780395/15581227) in c# which used `scopes,tenantId,clientId,clientSecret` to generate `graphClient` in client credential flow, I think most of them are similar, if you can refer to it and switch to java code? – Tiny Wang Feb 17 '22 at 05:27

1 Answers1

0

I have registered an app only application in Azure AD with the correct permissions and it works when testing from Postman

Just for the sake of the argument - please verify you have the following permission configured in your manifest file

<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
ymz
  • 6,602
  • 1
  • 20
  • 39
  • Thanks for the suggestion, I did not. However adding it did not change the error message. What makes you think I need that permission in android? I also have the following permissions (When I referred to "correct permissions" in my original question i ment the permissions such as sites.selected in azure ad.) – Björn Feb 21 '22 at 10:07
  • thanks for sharing.. this issue is really a challenging one? another question - are you using a real device or an emulator? – ymz Feb 21 '22 at 13:03
  • 1
    Im using a real device. Cat S42 with android 11. I guess I could try other devices. I don't have any available now. But will give it a go as soon as I can. – Björn Feb 22 '22 at 08:23