Как исправить ошибку «Активность утекла ServiceConnection net.openid.appauth.browser.CustomTabManager$1@41fb56d0, который был изначально привязан здесь» - PullRequest
1 голос
/ 03 июня 2019

Я настраиваю свое приложение для Android на использование аутентификации и следую документации по AppAuth для Android. До сих пор я был в состоянии соединиться и сделать запрос к серверу идентификации и получил ответ, содержащий большую часть данных, которые я отправил в своем запросе, и многое другое. Я должен обменять свой код на токен доступа. Это моя проблема. Я буквально копирую и вставляю код на страницу github, https://github.com/openid/AppAuth-Android,, но он вылетает с вышеуказанной ошибкой. Я относительно новичок в Android, и это мой первый вопрос здесь, будьте спокойны, если я не представляю свой вопрос хорошо. Спасибо.

Android Studio сообщает, что код, вызывающий эту ошибку, - «authService.performTokenRequest ()». Я осмотрелся, и некоторые решили это, вызвав «authService.dispose ()» в «onDestroy ()», но это также приводит к ошибке «Произошла ошибка при выполнении doInBackground ()». Ниже приведен код, вызывающий ошибку.

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
          }
        }
    });

В моем onCreate () я так его называю.

AuthorizationResponse resp = AuthorizationResponse.fromIntent(getIntent());
        AuthorizationException ex = AuthorizationException.fromIntent(getIntent());
        authState = new AuthState(resp, ex);
        authorizationService = new AuthorizationService(this);
        authorizationService.performTokenRequest(
                resp.createTokenExchangeRequest(),
                new AuthorizationService.TokenResponseCallback() {
                    @Override public void onTokenRequestCompleted(
                            TokenResponse resp, AuthorizationException ex) {
                        authState.update(resp, ex);
                        if (resp != null) {
                            // exchange succeeded
                            Log.e("authstate",authState.getAccessToken());
                        } else {
                            // authorization failed, check ex for more details
                        }
                    }
                });
...