O login do Facebook não funciona mais desde que eu atualizei o aplicativo Firebase para o novo console (apenas)

Eu tinha um aplicativo funcional com o recurso de login no Facebook e e-mail, desde que atualizei o console do Firebase (apenas o sdk não foi atualizado).

A versão do aplicativo antes do Firebase 3.0 estava funcionando antes, mas não é mais capaz de assinar / registrar com o Facebook após o upgrade do console.

O que eu fiz:

1 - Atualizou o console do Firebase

Devido à atualização do console do Firebase e do Facebook, eu também tive que colocar o retorno de chamada Oauth no aplicativo do Facebook

2 - Colou o retorno de chamada do OAuth do Facebook do Firebase no console do Facebook (antes de ser anulado) `https://xxx.firebaseapp.com/__/auth/handler``

A exceção:

O ouvinte de autenticação do firebase aciona um erro do Firebase:

Credenciais de autenticação inválidas fornecidas. e Facebook: {"providerErrorInfo": {"code": 400, "message": "Resposta mal-sucedida de debug_token do Facebook: {\" error \ ": {\" message \ ": \" (# 100) Você deve fornecer um token de acesso ao aplicativo ou token de acesso do usuário proprietário ou desenvolvedor do aplicativo \ ", \" type \ ": \" OAuthException \ ", \" code \ ": 100, \" fbtrace_id \ ": \" DG4lLRJHFBS \ "}}"}}

O código FirebaseError:

No código descompilado do FirebaseAndroidSdk, o objeto de erro é:

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

1 = {java.util.LinkedHashMap$LinkedEntry@22681} "message" -> "Credenciais de autenticação inválidas fornecidas."

2 = {java.util.LinkedHashMap$LinkedEntry@22682} "detalhes" -> "{" providerErrorInfo ": {" code ": 400," message ":" Resposta mal sucedida do debug_token do Facebook: {\ "error \": { \ "message \": \ "(# 100) Você deve fornecer um token de acesso ao aplicativo ou um token de acesso do usuário proprietário ou desenvolvedor do aplicativo \", \ "type \": \ "OAuthException \", \ " código \ ": 100, \" fbtrace_id \ ": \" BtB3JF2qmku \ "}}"}} "

com o código descompilado:

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

No nível AuthListener, o código firebaseError:-20

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

As credenciais de autenticação especificadas são inválidas.

O código de erro do Facebook:

código400

Nada relevante encontrado aqui:https://developers.facebook.com/docs/graph-api/using-graph-api/#errors

O código para Authing:

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

Validade TOKEN:

A partir do código acima, o token é confirmado como válido:

https://graph.facebook.com/app?access_token=%7Byour_access_token%7D retornar um JSON válido

E a ferramenta do Facebook AccessTokenhttps://developers.facebook.com/tools/debug/accesstoken retornar um TOKEN ainda válido

O que mudou do ponto de vista do usuário:

Agora, quando clico no FacebookLoginButton, tenho uma nova caixa de diálogo que pergunta "connection as% FacebookUserName", com 2 botões ("Unconnect" e "Cancel")

Publiquei um relatório de bug no Firebase, mas nem sei se esse é o Facebook ou o Firebase, qualquer ajuda, aconselhamento para explorar uma nova superfície ou solução de problema é bem-vindo.

questionAnswers(1)

yourAnswerToTheQuestion