У меня было рабочее приложение с функцией входа в 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, любая помощь, совет по изучению новой поверхности проблемы или решения приветствуются.

Invalid authentication credentials providedошибку. Следовательно, это похоже на проблему с Firebase. - person Durian   schedule 25.05.2016Facebook 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