Erro: Status {statusCode = DEVELOPER_ERROR, resolution = null}

102

Estou usando o login do gplus e recebo esse erro no momento em que estou em onActivityResult ....

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
    client.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 0) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (result.isSuccess()) {

            GoogleSignInAccount acct = result.getSignInAccount();
//                Log.d("Result","details"+ acct.getDisplayName() + acct.getEmail());

            mEmail = acct.getEmail();
            String mFullName = acct.getDisplayName();
            String mGoogleplusId = acct.getId();


            SocialUser user = new SocialUser();
            user.setType("googleplus");

            user.setEmail(mEmail);
            user.setFullname(mFullName);
            user.setId(mGoogleplusId + "");
            loginParams.put("email_id", mEmail);
            loginParams.put("googlePlusId", mGoogleplusId);
            loginParams.put("full_name", mFullName);
            loginParams.put("registrationType", "googleplus");
            SignUpService(user);


        } else {
            Toast.makeText(CustomerLogIn.this, "Unable to fetch data, Proceed manually", Toast.LENGTH_SHORT).show();
        }
    }
}

E estou ligando para o login do gplus no clique do botão. Ao clicar no botão, o seguinte código é executado ....

 GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(CustomerLogIn.this)

            .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
            .build();


    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, 0);

E estou recebendo esse erro ...

Status{statusCode=DEVELOPER_ERROR, resolution=null}

nesta linha ....

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

Por favor, sugira a solução.

Gurvinder Singh
fonte
1
O aplicativo está configurado incorretamente. Verifique a configuração da API do Google.
1
6
Sim, mas não consigo descobrir o que está errado.
Gurvinder Singh
Eu não uso o Firebase. Veja minha solução aqui: stackoverflow.com/a/46828895/1160216
Mike Miller

Respostas:

213

Você precisa adicionar sua chave SHA1 à configuração do console do Firebase. Você pode fazer isso desta maneira:

Console do Firebase ( https://console.firebase.google.com ) -> seu projeto -> configuração -> role para

insira a descrição da imagem aqui

Você pode encontrar sua chave SHA1 executando "Relatório de assinatura" do Android Studio:

insira a descrição da imagem aqui

Então, olhe a "aba executar" e clique no botão:

insira a descrição da imagem aqui

Acho que é a maneira mais fácil. Espero essa ajuda.

SolArabehety
fonte
1
aqui está a maneira mais fácil de obter a versão SHA-1 do console do desenvolvedor do Google: stackoverflow.com/a/50124038/4923891
eren130
Tive problemas para entender onde colocar essa chave SHA no Firebase Console. Finalmente encontrei. Abra Configurações do projeto> Role para baixo, Adicionar impressão digital, coloque sua chave SHA lá> Baixe o novo google-services.json e coloque-o android-app \ app
paakjis
1
Nota! Mesmo que o console do firebase tenha um espaço para hash de chave SHA-256, você DEVE inserir a chave SHA-1. O SHA-256 ainda apresentará erros
f.khantsis
Útil. Obrigado!
Pooja
30

Provavelmente você criou o arquivo de configuração usando o SHA1 do seu token de produção , use o androiddebugkeyalias para reunir o SHA1 correspondente à versão de depuração do seu aplicativo e copie o arquivo de configuração para o diretório 'app', você deve ter os dois arquivos de configuração (um para para fins de depuração e outro para ambiente de produção).

Com base no passo a passo publicado em https://developers.google.com/identity/sign-in/android/start

Mario
fonte
5
Meu erro foi corrigido quando mudei para as credenciais do cliente da Web em vez do cliente Android para o ID do cliente OAuth 2.0. O texto ainda me confunde, pois estou desenvolvendo um aplicativo Android que se comunica com um servidor web ... mas o erro pelo menos desapareceu
Burrito
12

Eu tive o mesmo problema e resolvi seguir estas etapas:

1. Adicione a impressão digital DEBUG_KEYSTORE SHA1 ao projeto do Firebase. use o seguinte comando (MAC / LINUX)

  keytool -exportcert -list -v \-alias androiddebugkey -keystore ~/.android/debug.keystore  

2.Agora gere um apk assinado do seu projeto. O processo inclui a geração de um armazenamento de chaves para a versão de lançamento do seu aplicativo.

  Copy the path of the newly generated .jks file.

3. Agora gere a impressão digital RELEASE_KEYSTORE SHA1 usando o seguinte comando

  keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME

4.Copie o novo SHA1 da saída e adicione-o como outra impressão digital SHA1 no console do aplicativo Firebase.

Agora você está pronto para ir! ---- Esperança! isso ajuda.

Udit Kapahi
fonte
que liberou sha1 apenas estou colocando então também recebendo este erro, gerar google_services.xml para login do google, analytics e gcm, arquivo único
Harsha
certifique-se de que seu sha1 seja da versão de 'lançamento' do aplicativo, não da versão de 'depuração'
Udit Kapahi
Sim, estou gerando um apk assinado e publicado no appstore também, que só estou usando jks e senhas de armazenamento de chaves
Harsha
meu ssl aberto é openssl-0.9.8k_WIN32 estou usando previos para o desenvolvimento um
Harsha
keytool requer uma senha : "android"
Guglie
11

insira a descrição da imagem aqui

O jeito que eu consertei foi pegando a tecla correspondente ao texto destacado. Devido ao uso confuso da palavra 'servidor' na página de documentação do Firebase, eu estava pegando oServer key . Qual era a razão do problema.

Você pode encontrar a chave aqui .

4127157
fonte
Obrigado! Funcionou no meu caso. Eu acho que de alguma forma conectado com o uso do próprio servidor de back-end (e chamando por "requestServerAuthCode" no GoogleSignIn)
ITurchenko
5

Eu estava tendo o mesmo problema, como eu resolvi é que tinha um applicationId diferente no meu arquivo Gradle do que o nome do pacote no meu arquivo de manifesto. E usei o applicationId para criar o arquivo json. Tive que alterar o nome do meu pacote para o que era meu applicationId e isso corrigiu para mim.

Renegado
fonte
1
Sempre pensei que o pacote no Manifesto fosse substituído pelo ApplicationId definido no gradle. Esse não é o caso?
Flo We
3

Como alternativa às respostas fornecidas aqui, você pode usar o Firebase Assistant do Android Studio para adicionar automaticamente o SHA-1 ao seu projeto com o clique de alguns botões.

No Android Studio, acesse Tools > Firebase > Select 'Authentication'e clique no link que diz'Email and password authentication' .

Isso trará a você um pequeno tutorial sobre como integrar a autenticação ao seu projeto, mas como provavelmente você já fez tudo isso, basta clicar 'Connect to Firebase'e pronto.

Renan Aguiar
fonte
3

É uma pergunta antiga, mas estou preso com o erro 10 (DEVELOPER_ERROR) recentemente, porque eu estava usando o ID do cliente Android, que criei no console do desenvolvedor do Google.

A solução para mim foi usar as credenciais do Android no console do desenvolvedor do Google apenas para indicar a chave SHA do meu apk e usar as credenciais do ID de cliente do aplicativo da Web (!) Do console do desenvolvedor do Google no meu aplicativo Cordova.

config.xml:

<plugin name="cordova-plugin-googleplus" spec="^5.3.0">
    <variable name="REVERSED_CLIENT_ID" value="com.googleusercontent.apps.[web-application-client-id]" />
    <variable name="WEB_APPLICATION_CLIENT_ID" value="[web-application-client-id].apps.googleusercontent.com" />
</plugin>

código:

window.plugins.googleplus.login(
    {
       'webClientId': '[web-application-client-id].apps.googleusercontent.com'
    }, 
    ...

Eu não uso o Firebase.

Tobik
fonte
Muito obrigado, isso me economizou muito tempo. Na verdade, usar a web gerada automaticamente client idresolveu o problema DEVELOPER_ERROR. Embora para mim não faça sentido e não seja óbvio que deva ser usado um ID de cliente diferente.
Myroslav Kolodii
3

Você pode ter gerado e adicionado a chave SHA1 errada. Use as seguintes etapas para gerar a chave SHA1 no Android Studio:

  1. Clique em Gradle (no painel do lado direito, você verá Gradle Bar)
  2. Clique em Atualizar (clique em Atualizar na barra do Gradle, você verá os scripts da lista do Gradle do seu projeto)
  3. Clique em Seu projeto (Lista de formulários de nome de seu projeto (raiz))
  4. Clique em Tarefas
  5. Clique no Android
  6. Clique duas vezes em SignReport (você obterá SHA1 e MD5 na Barra de Execução (às vezes estará no Console do Gradle))

Agora adicione esta chave SHA1 em seu projeto Firebase android.

Sanjay Sharma
fonte
3

Coloque o arquivo json correto na raiz do projeto android
Para obter mais informações, consulte aqui: https://coderzpassion.com/android-working-latest-google-plus-login-api/

Jagjit Singh
fonte
É obrigatório adicionar aquele json que costumávamos dispensar antes?
Gurvinder Singh
Coloquei o arquivo correto com a configuração correta, mas ainda há erro
Bibaswann Bandyopadhyay
1

Para mim, estava funcionando quando o implementei pela primeira vez, mas parei após alguns dias de desenvolvimento, com a mensagem de erro mencionada.

Resolvi o problema com estas etapas:

  1. Eu adicionei a impressão digital sha-256 em cima da impressão digital sha-1 que eu já tinha no console do Firebase. (Não tenho certeza se esta etapa é necessária)
  2. Baixei o arquivo google-services.json novamente e substituí o arquivo antigo.
  3. reinstalou o aplicativo

e funcionou

Mantoska
fonte
0

Encontrei este erro em meu aplicativo Firebase. Foi corrigido quando adicionei a requestIdToken(activity.getString(R.string.default_web_client_id))parte abaixo.

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail().requestIdToken(activity.getString(R.string.default_web_client_id))
        .build();

    apiClient = new GoogleApiClient.Builder(activity)
        .addConnectionCallbacks(this)
        .enableAutoManage(activity, this)
        .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
        .build();

    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(apiClient);
    activity.startActivityForResult(signInIntent, RC_GOOGLE_SIGN_IN);
Dan Brough
fonte
o que é default_web_client_id? de onde posso obtê-lo?
Ayman Al-Absi
@ AymanAl-Absi Você configurou seu projeto corretamente para os serviços do Google? consulte: developers.google.com/android/guides/google-services-plugin
Dan Brough
1
@ AymanAl-Absi, você também obtém o "default_web_client_id" do seu arquivo google-service.json neste arquivo, você pode ver a tag Client_ID nessa tag que copia apenas esse texto (client_ID) <[Client_ID] .app.etc>.
Príncipe
0

Recebi este erro quando atualizei meu arquivo de configuração json com uma nova conta do Google.

Desinstalar o aplicativo manualmente e reinstalar o aplicativo funcionou para mim.

sanath_p
fonte
0

O erro é causado porque a soma de verificação SHA-1 da chave de depuração ou liberação não está incluída no console do firebase / google.

Primeiro gere a chave usando o seguinte comando:

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

Em seguida, copie a soma de verificação SHA-1 e vá para:

Firebase Console> Seu projeto> Configurações do aplicativo> Adicionar impressão digital

Nabin Bhandari
fonte
0

Certifique-se de habilitar o Login do Google em Autenticação no console do Firebase.

hellowill89
fonte
0

Resolvi meu problema usando server_client_id certo nesta linha:

String serverClientId = getString(R.string.server_client_id);

Usei o código errado.

The MJ
fonte
0

Alguns serviços, como o login do Google, exigem que a impressão digital SHA1 seja adicionada ao console do Firebase.

Perdi a adição da impressão digital SHA no console do firebase. Você pode fazer isso indo em Console FireBase> configuração do projeto> opção Adicionar impressão digital.

Você pode gerar a impressão digital SHA1 de uma maneira muito fácil https://www.youtube.com/watch?v=FczARQ244GE

Depois disso eu estava cometendo mais um erro

Após a geração da chave SHA1 do método acima. Copiei a chave SHA1 inválida errada, que estava expirada. Portanto, certifique-se de que a chave SHA1 que você está copiando da forma de saída acima seja válida (verifique o valor válido até a chave SHA1)

Além disso, certifique-se de que o nome do pacote (xyz) que você adicionou no firebase é o mesmo usado no seu código Android.

Certifique-se também de usar o AppID correto

user2694064
fonte
0

Após uma longa investigação, encontrei uma solução. Na verdade este erro Error: Status{statusCode=DEVELOPER_ERROR, resolution=null}aponta para SHA-1 incorreta ou nome do pacote incorreto ou algo mais ?. No meu caso, adiciono a debugpalavra-chave ao final do nome do meu pacote com.sample.app=>com.sample.app.debug

Albert
fonte
0

Lutei com esse problema porque fiz uma cópia do meu aplicativo com a alteração do nome do pacote. Adiciono um novo projeto para ele no Firebase. Meu erro foi que esqueci de alterar o ID do cliente do servidor para o do novo projeto Firebase.

mais detalhes sob autenticação com Firebase sectoin aqui

Amira Samawi
fonte