Вход в Facebook больше не работает, так как я обновил приложение Firebase до новой консоли (только)

У меня было рабочее приложение с функцией входа в систему Facebook и электронной почты, так как я обновляю консоль Firebase (только sdk не обновлялся).

Релиз приложения до Firebase 3.0 работал раньше, но он больше не может подписывать / регистрироваться с Facebook после обновления консоли.

Что я сделал:

1 - Обновлена ​​консоль Firebase

Из-за обновления консоли Firebase и Facebook мне также пришлось добавить Oauth Callback в приложение Facebook

2 - Вставил обратный вызов Firebase Facebook OAuth в консоль Facebook (до того, как он стал недействительным) `https://xxx.firebaseapp.com/__/auth/handler``

Исключение:

Слушатель аутентификации firebase вызывает ошибку Firebase:

Предоставлены неверные учетные данные. и Facebook: {"providerErrorInfo": {"code": 400, "message": "Неудачный ответ debug_token от Facebook: {\" error \ ": {\" message \ ": \" (# 100) Вы должны предоставить токен доступа к приложению или токен доступа пользователя, который является владельцем или разработчиком приложения \ ", \" type \ ": \" OAuthException \ ", \" code \ ": 100, \" fbtrace_id \ ": \" DG4lLRJHFBS \ "}}"}}

Код FirebaseError:

В декомпилированном коде FirebaseAndroidSdk объект ошибки:

0 = {java.util.LinkedHashMap$LinkedEntry@22680} "code" -> "INVALID_CREDENTIALS"

1 = {java.util.LinkedHashMap$LinkedEntry@22681} "message" -> "Предоставлены неверные учетные данные для аутентификации".

2 = {java.util.LinkedHashMap$LinkedEntry@22682} "details" -> "{" providerErrorInfo ": {" code ": 400," message ":" Неудачный ответ debug_token от Facebook: {\ "error \": { \ "message \": \ "(# 100) Необходимо предоставить токен доступа к приложению или токен доступа пользователя, который является владельцем или разработчиком приложения \", \ "type \": \ "OAuthException \", \ " код \ ": 100, \" fbtrace_id \ ": \" BtB3JF2qmku \ "}}"}}»

с декомпилированным кодом:

private void makeAuthenticationRequest(String urlPath, Map<String, String> params, AuthResultHandler handler) {
    final AuthenticationManager.AuthAttempt attempt = this.newAuthAttempt(handler);
    this.makeRequest(urlPath, HttpRequestType.GET, params, Collections.emptyMap(), new RequestHandler() {
        public void onResult(Map<String, Object> result) {
            Object errorResponse = result.get("error");
            String token = (String)Utilities.getOrNull(result, "token", String.class);
            if(errorResponse == null && token != null) {
                if(!AuthenticationManager.this.attemptHasBeenPreempted(attempt)) {
                    AuthenticationManager.this.authWithCredential(token, result, attempt);
                }
            } else {
                FirebaseError error = AuthenticationManager.this.decodeErrorResponse(errorResponse);
                AuthenticationManager.this.fireAuthErrorIfNotPreempted(error, attempt);
            }

        }

        public void onError(IOException e) {
            FirebaseError error = new FirebaseError(-24, "There was an exception while connecting to the authentication server: " + e.getLocalizedMessage());
            AuthenticationManager.this.fireAuthErrorIfNotPreempted(error, attempt);
        }
    });
}

На уровне AuthListener код firebaseError:-20

https://www.firebase.com/docs/java-api/javadoc/com/firebase/client/FirebaseError.html

Указанные учетные данные неверны.

Код ошибки Facebook:

код400

Ничего уместного здесь не найдено:https://developers.facebook.com/docs/graph-api/using-graph-api/#errors

Код для аутентификации:

    public void authWithFirebase(final String provider, Map<String, String> options) {
        if (options.containsKey(AUTH_OPTIONS_ERROR)) {
            EventBus.getDefault().post(new MessageToDisplayEvent(options.get(AUTH_OPTIONS_ERROR), true));
        } else {
            if (provider.equalsIgnoreCase(AUTH_PROVIDER_TWITTER)) {
                // if the provider is twitter, we must pass in additional options, so use the options endpoint
                ref.authWithOAuthToken(provider, options, new AuthResultHandler(provider));
            } else {
                // if the provider is not twitter, we just need to pass in the oauth_token
                ref.authWithOAuthToken(provider, options.get(AUTH_OPTIONS_TOKEN), new AuthResultHandler(provider));
            }
        }
    }

TOKEN Срок действия:

Из приведенного выше кода токен подтверждается действительным, поскольку:

https://graph.facebook.com/app?access_token=%7Byour_access_token%7D вернуть действительный JSON

И инструмент Facebook AccessTokenhttps://developers.facebook.com/tools/debug/accesstoken вернуть действительный токен

Что изменилось с точки зрения пользователя:

Теперь, когда я нажимаю на FacebookLoginButton, у меня появляется новое диалоговое окно с запросом «connection as% FacebookUserName», с 2 кнопками («Unconnect» и «Cancel»)

Я опубликовал сообщение об ошибке в Firebase, но я даже не знаю, является ли это Facebook или Firebase, любая помощь, совет по исследованию новой поверхности вопроса или решение приветствуется.

Ответы на вопрос(1)

Ваш ответ на вопрос