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

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

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

Что я сделал:

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

Из-за обновления консоли Firebase и Facebook мне также пришлось добавить обратный вызов Oauth в приложение 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} «код» -> «INVALID_CREDENTIALS»

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

2 = {java.util.LinkedHashMap$LinkedEntry@22682} "детали" -> "{" 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));
            }
        }
    }

Срок действия ТОКЕНА:

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

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

И инструмент Facebook Tool AccessToken https://developers.facebook.com/tools/debug/accesstoken возвращает все еще действующий ТОКЕН

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

Теперь, когда я нажимаю кнопку FacebookLoginButton, у меня появляется новое диалоговое окно с запросом «подключение как% FacebookUserName» с двумя кнопками («Отключить» и «Отменить»).

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


comment
Ну, так как я обновился до Firebase 3.0, у меня такая же проблема с Google Sign In. Я не обновил свой SDK, кроме консоли, и теперь я не могу авторизоваться с помощью токена. Я получаю Invalid authentication credentials provided ошибку. Следовательно, это похоже на проблему с Firebase.   -  person Durian    schedule 25.05.2016
comment
@Durian рад вас слышать, с таким сложным процессом аутентификации вы никогда не будете на 100% уверены, что проблема не на вашей стороне. У меня обнаружена ошибка, добавьте ее, чтобы вы повысили осведомленность команды Firebase (вчера один из них сказал мне, что я был один из того, что он слышал) firebase.google.com/support/contact/bugs-features   -  person Anthony    schedule 25.05.2016
comment
Привет! Похоже, у вас проблемы. Вы можете связаться со мной по адресу [email protected]?   -  person Rob DiMarco    schedule 26.05.2016
comment
@Durian Если у вас возникнут какие-либо проблемы, пожалуйста, свяжитесь со мной.   -  person Rob DiMarco    schedule 26.05.2016
comment
У меня такая же проблема с Firebase 3.0, когда я использую ключи тестового приложения facebook. Я могу войти в систему, если использую ключи своего производственного приложения facebook, тогда я думаю, что это ошибка OAuth между тестовыми приложениями Firebase и Facebook.   -  person Ch4vi    schedule 02.06.2016
comment
@ Ch4vi вы пробовали мое решение ниже?   -  person Anthony    schedule 02.06.2016
comment
@Anthony Я сделал это, но у меня эта опция отключена по умолчанию, я проверил оба приложения (тестовое и производственное), но у меня проблема только с тестовым приложением в facebook. Я думаю, что это ошибка Firebase, потому что мои конфигурации такие же, и я изменил ключи и все в своей консоли Firebase.   -  person Ch4vi    schedule 03.06.2016
comment
@ Ch4vi, у меня только приложение в Прод. Но у меня возникает другая проблема, когда я использую тестового пользователя Facebook. Вы получаете такое же сообщение об ошибке?   -  person Anthony    schedule 03.06.2016
comment
@Anthony да, у меня Facebook sign in failed error: An internal error has occured. [ Unsuccessful debug_token response from Facebook: {"error":{"message":"(#100) You must provide an app access token or a user access token that is an owner or developer of the app" У вас есть активное и общедоступное приложение facebook? (Зеленая точка рядом с именем вашего приложения в facebook) Это единственная разница между моим профессиональным и тестовым приложениями   -  person Ch4vi    schedule 03.06.2016
comment
@ Ch4vi да, приложение активно и общедоступно (извините за опоздание, хотя я уже ответил). Вы пошли дальше с этим непростым вопросом?   -  person Anthony    schedule 05.07.2016


Ответы (1)


В консоли разработчика Facebook отключите параметр «ключ приложения, интегрированный в клиент».

Для меня это изменило поведение. Я дам больше информации по мере того, как получу от Firebase / Facebook

Вот скриншот на французском, который поможет вам настроить Facebook:

введите описание изображения здесь

person Anthony    schedule 30.05.2016
comment
@Anthony - Можете ли вы распечатать снимок экрана, чтобы показать, есть ли эта опция в консоли разработчика Facebook ??? Я осмотрелся и не нашел. У меня сейчас те же проблемы :( Спасибо - person Dave0504; 09.06.2016
comment
@ Dave0504 Добавлен скриншот. Не забудьте ввести Inc ответ, если вам это подходит. - person Anthony; 10.06.2016
comment
@Anthony Спасибо за вашу помощь, Энтони, однако у меня все еще та же проблема, и теперь я думаю, что это проблема Firebase, а не Facebook. +1 хоть за помощь :) - person Dave0504; 14.06.2016
comment
У меня именно такая проблема, все кажется правильным, но я всегда получаю эту ошибку при входе в систему с тестовым пользователем (учетная запись Facebook, добавленная под роль тестера в консоли FB Dev). На скриншоте выше я помню, что видел его, когда создавал приложение в Facebook, но не могу найти его снова - я подозреваю, что это одноразовая настройка? - person theLastNightTrain; 07.06.2017
comment
Нашел его в Настройки- ›Дополнительно, и это, к счастью, решило эту проблему для меня :) - person theLastNightTrain; 07.06.2017