为 keyclock authService.performTokenRequest() 函数执行 doInBackground() 时发生错误

Sub*_*abu 1 android android-asynctask android-backup-service keycloak appauth

在集成Keyclock SDK时,我尝试交换授权码来访问令牌

authService.performTokenRequest(
resp.createTokenExchangeRequest(),
new AuthorizationService.TokenResponseCallback() {
  @Override public void onTokenRequestCompleted(
        TokenResponse resp, AuthorizationException ex) {
      if (resp != null) {
        // exchange succeeded
      } else {
        // authorization failed, check ex for more details
      }
    }
});
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,

  java.lang.RuntimeException: An error occurred while executing doInBackground()
    at android.os.AsyncTask$3.done(AsyncTask.java:354)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
    at java.util.concurrent.FutureTask.run(FutureTask.java:271)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:764)
 Caused by: java.lang.IllegalArgumentException: only https connections are permitted
    at net.openid.appauth.Preconditions.checkArgument(Preconditions.java:116)
    at net.openid.appauth.connectivity.DefaultConnectionBuilder.openConnection(DefaultConnectionBuilder.java:51)
    at net.openid.appauth.AuthorizationService$TokenRequestTask.doInBackground(AuthorizationService.java:418)
    at net.openid.appauth.AuthorizationService$TokenRequestTask.doInBackground(AuthorizationService.java:395)
    at android.os.AsyncTask$2.call(AsyncTask.java:333)
Run Code Online (Sandbox Code Playgroud)

小智 7

对于那些正在使用该flutter_appauth插件的人。

您可以通过设置来解决此allowInsecureConnections问题true

AuthorizationTokenRequest(
        "CLIENT_ID",
        "REDIRECT_URL",
        issuer: 'ISSUER',
        scopes: ['openid', 'profile', 'offline_access','email'],
        allowInsecureConnections:true// <-- add this
)
Run Code Online (Sandbox Code Playgroud)