Em um dos meus aplicativos, preciso obter dados do Facebook ... Estou fazendo o seguinte:
Eu criei o ID do aplicativo . Ele efetua login com êxito, mas após o logout, efetuo o logon e me fornece:
O que estou errado? Estou usando o SDK do Facebook ... Instalei o Facebook no meu telefone ... Ele está funcionando bem em um emulador, mas esse aplicativo do Facebook não está instalado.
Este é o meu código:
if (FB_APP_ID == null) {
Builder alertBuilder = new Builder(this);
alertBuilder.setTitle("Warning");
alertBuilder.setMessage("A Facebook Applicaton ID must be " +
"specified before running this example: see App.java");
alertBuilder.create().show();
}
// Initialize the dispatcher
Dispatcher dispatcher = new Dispatcher(this);
dispatcher.addHandler("login", LoginHandler.class);
dispatcher.addHandler("stream", StreamHandler.class);
dispatcher.addHandler("logout", LogoutHandler.class);
// If a session already exists, render the stream page
// immediately. Otherwise, render the login page.
Session session = Session.restore(this);
if (session != null) {
dispatcher.runHandler("stream");
}
else {
dispatcher.runHandler("login");
}
Respostas:
A chave de hash gerada está incorreta. Você pode obter a chave de hash usando duas etapas.
Um é através de um prompt de comando. Outro é através da codificação. A chave de hash através de um prompt de comando está funcionando somente na primeira vez. Eu não sei o motivo. Eu também tenho o mesmo problema. Então, eu tentei através de programação.
Siga esses passos:
Cole o seguinte código em
oncreate()
.Modifique "com.example.packagename" com o nome do seu pacote na codificação acima sem falha (você pode encontrar o nome do seu pacote no arquivo de manifesto do Android).
Execute seu aplicativo. Vá para a atividade em que você colou o código acima. No arquivo LogCat, procure por "KeyHash". Você pode encontrar um hash chave. Copie o hash da chave e vá para a página do painel de aplicativos do Facebook. Vá para configurações e insira os detalhes como na imagem abaixo.
Depois de concluir a etapa acima, reinicie o aplicativo novamente. Agora você pode fazer login no Facebook. Para mais detalhes sobre o hash da chave, consulte o link .
Se você adicionar informações incorretas na página de configurações, isso significa que ocorrerá algum erro. Portanto, use as informações corretas lá. E também se o público (que não seja você) precisar usar seu aplicativo significa que você precisa habilitar a permissão (altere "yes" em "Status & Review" ao lado da configuração) .
fonte
Se você estiver usando a assinatura do Google Play App:
Abra a seção de assinatura de aplicativos no Google Play Console e obtenha o hash SHA-1 em Certificado de assinatura de aplicativos . Em seguida, converta-o em Base64 , por exemplo, com esta ferramenta: Hexadecimal -> decodificador de string base64
fonte
echo YOUR_SHA1_CERTIFICATE_COPIED_FROM_GOOGLE_PLAY | sed s/\://g | xxd -r -p | base64
Se você estiver enfrentando esse problema, insira essa chave no developer.facebook.com :
Em seguida, verifique se o aplicativo está ativo no developer.facebook.com .
Este círculo verde indica que o aplicativo está ativo:
Caso contrário, siga estas duas etapas para ativar seu aplicativo:
Etapa 1 Vá para o seu aplicativo → configuração → adicione E - mail de contato e aplique Salvar alterações.
Etapa 2 Vá para a opção Revisão do aplicativo e verifique se essa opção é Sim . Eu adicionei uma captura de tela:
Nota: Se você deseja copiar a hashkey, verifique o BlueServiceQueue no LogCat .
fonte
BlueServiceQueue
em logcatEu tenho o mesmo problema. Eu tinha certeza de que era devido a uma falha muito pequena e sim, era!
Eu encontrei a solução:
Ao gerar a chave de hash de depuração no meu computador, digitei a senha do meu sistema. Mas a senha deve ser a seguinte -
Digite a senha do keystore: "android". Este foi o único problema no meu caso.
----- Para gerar o hash da chave Debug , use este comando -
Digite a senha do keystore: 'android'
----- Para gerar o hash da chave Release , use este comando -
Forneça sua senha do keystore após executar este comando.
fonte
Eu experimentei o mesmo problema. Fiz uma breve pesquisa sobre as possíveis razões para esse comportamento estranho e descobri o seguinte:
Durante a primeira execução de um novo aplicativo do Facebook, ele permitirá conexão / login, mesmo se você não especificar nenhum hash de chave.
Para mim, o tutorial fornecido pelo Facebook não gerou o hash da chave correto, porque estava dando a configuração errada . Ao executar:
verifique todas as propriedades - a
HOMEPATH
existência do keystore etc. Talvez você também precise fornecer a senha.O que gerou a configuração adequada foi a solução sugerida por @Mahendran .
Além disso, se você vir o erro originalmente publicado ( http://i.stack.imgur.com/58q3v.png ), provavelmente o hash da chave que você vê na tela é o real. Se nada mais funcionar, tente inseri-lo no Facebook.
Eu obtive todos esses resultados com: Windows 7 edição de 64 bits, Android Studio 1.2.2, JDK 7.
fonte
De acordo com o Login do Facebook para Android , você deve fornecer o valor do hash da chave. Para obtê-lo, você precisará da chave usada para assinar seu aplicativo.
fonte
Você deve criar dois hashes de chave, um para Debug e outro para Release.
Para o hash da chave Debug :
No OS X, execute:
No Windows, execute:
Origem dos hashes das chaves de depuração
Para o hash da chave Release :
No OS X, execute (substitua o que há entre os
<>
seus valores) :No Windows, use (substitua o que há entre
<>
seus valores) :Liberar fonte de hashes de chave
fonte
Tentei todas as respostas anteriores e nada ajudou meu caso com meus clientes!
Então, meu cliente lembrou que ele tinha o aplicativo do Facebook instalado em seu dispositivo. Depois que ele removeu. o login funcionou perfeitamente.
O hashkey foi alterado e substituí as chaves de hash antigas no Facebook Developers Console pela chave do erro (como sugerido acima) e funciona!
O aplicativo do Facebook em si pode ser o problema, então é melhor descobrir isso em um dispositivo com o aplicativo do Facebook instalado e em um dispositivo com o aplicativo do Facebook não instalado e lidar com os dois casos ...
fonte
Foi assim que resolvi esse problema:
Primeiro você precisa obter o valor SHA-1. Para isso, existem duas maneiras.
Para obter o valor SHA-1 no Android Studio.
OU
Para obter o valor SHA-1 do arquivo keystore .
Copie o valor SHA-1 para a área de transferência da seguinte maneira:
E abra o decodificador Hexadecimal -> Base64 para converter seu valor SHA-1 em Base64.
É isso que o Facebook exige.
Obtenha o hash gerado "******************** =" e copie o hash da chave no aplicativo do Facebook.
fonte
Eu estava tendo o mesmo problema. Primeiro faça o login, tudo bem, mas, em seguida, um hash de chave inválido.
O SDK do Facebook para Unity obtém o hash da chave errado. Ele obtém a chave de "C: \ Users \" your user ".android \ debug.keystore" e, em um mundo perfeito, deve obtê-la do keystore que você criou em seu projeto. É por isso que está lhe dizendo que o hash da chave não está registrado.
Conforme sugerido por Madi , você pode seguir as etapas neste link para encontrar a chave certa. Apenas certifique-se de apontá-los para o keystore dentro do seu projeto. Caso contrário, você não receberá a chave certa.
fonte
O código a seguir fornecerá seu hash para o Facebook, mas você deve seguir estas etapas para obter o hash do candidato a lançamento.
Copie e cole este código em sua atividade principal
Gere um arquivo APK assinado .
https://developers.facebook.com/apps
. Está nas configurações.fonte
Após uma longa pesquisa, encontramos uma solução.
Definimos permissões como:
Isso funcionou pela primeira vez, mas quando voltamos a entrar no Facebook, ocorreu o Erro de Hash Inválido .
A solução simples foi alterar a linha acima para:
E funcionou como uma felicidade!
O Facebook deve retornar a exceção correta em vez do erro enganoso de chave de hash inválido.
fonte
Depois de tantos testes, me deparei com uma solução para isso. Gerei e adicionei chaves de depuração e liberação ao console do desenvolvedor do Facebook e ainda recebi o erro.
A única solução que funcionou para mim foi desinstalar o programa OpenSSL do Google e fazer o download no Win32 / Win64 OpenSSL Installer for Windows
Realmente funciona como mágica.
fonte
Embora essa pergunta tenha sido respondida de várias maneiras úteis, eu só queria acrescentar que, quando segui a resposta de Rafal Maleks (usando as teclas de hash no Google Play Console), NÃO Pude usar a tecla SHA1 de assinatura de aplicativo, ainda recebi o genérico erro do Facebook. Em vez disso, eu precisava usar a impressão digital do certificado SHA-1 da parte Carregar certificado (logo abaixo da parte Assinatura do aplicativo no Google Play Console). Mesmo processo de outra forma;
Copie a impressão digital do certificado SHA-1 da seção Carregar certificado no Google Play Console
Converta o SHA-1 usando: http://tomeko.net/online_tools/hex_to_base64.php e copie a saída (base64)
Cole-o na entrada Key Hashes em developer.facebook.com e salve as alterações.
Esperamos que esta resposta não seja redundante e ajude alguém que não pode fazê-la funcionar com o certificado de assinatura do aplicativo.
Agora, o login do Facebook funciona no meu aplicativo, tanto no modo de depuração quanto no lançamento.
fonte
Cole o seguinte código no seu método OnCreate:
Apenas modifique o nome do pacote. Em seguida, vá para o seu arquivo LogCat e selecione Depurar pesquisa aqui. Então você encontrará a chave de hash. Agora copie essa chave de hash e vá para o site developer.facebook.app_id, edite sua chave de hash e pressione Save. Agora execute seu projeto Android novamente. Eu acho que o problema será resolvido.
fonte
Isso pode ajudar alguém com o mesmo problema.
Gere o hash da chave usando o código abaixo
Como usar o keytool
Cole-o no campo obrigatório no desenvolvedor do Facebook
No Android Studio, menu Arquivo → Estrutura do Projeto
Adicione parâmetros de assinatura.
Selecionar sabores
Selecione a configuração de assinatura que criamos.
Selecione o tipo de construção
Selecione a variante de compilação e crie-a
fonte
Eu tive o mesmo problema quando estava depurando meu aplicativo. Reescrevi o hash que você riscou na imagem anexada (a que o Facebook diz ser inválida) e o adicionei no console de desenvolvedores do Facebook aos hashes principais. Apenas tenha cuidado com erros de digitação.
Essa solução é mais uma solução fácil do que uma solução adequada.
fonte
Se você estiver digitando o keyhash manualmente (por exemplo, do celular para o Painel do Facebook), certifique-se de diferenciar entre L pequeno e maiúsculo I.
fonte
fonte
O que o Facebook usou não é a senha padrão e o alias para depuração. Você precisa alterá-lo a seguir e ele funcionará.
Se você não alterou nada com a senha padrão, deve ser "android" .
Você também pode configurá-lo no arquivo build.gradle. Mas a mesma senha de alias deve ser usada para gerar o hash:
fonte
Aqui estão muitas respostas certas. Só uma coisa:
Cole o hash recebido em Aplicativo → Configurações → Principal , não no tutorial de início rápido.
fonte
Eu tive o mesmo problema.
Crie o arquivo APK com o mesmo dispositivo que gerou o hashkey armazenado na seção de desenvolvedores do Facebook.
fonte
Corrigi isso adicionando o seguinte em
MainApplication.onCreate
:Fiz o upload no console do desenvolvedor do Google e depois baixei o APK derivado que, por qualquer motivo, possui um hash de chave totalmente diferente.
Em seguida, usei o LogCat para determinar o novo hash da chave e o adicionei ao Facebook como outros usuários descreveram.
fonte
Se você estiver gerando hashes de chave de liberação, insira a senha real do seu keystore e não o "android".
Este foi o meu problema. A versão de depuração estava funcionando, mas o APK da versão não estava.
fonte
Use o código abaixo no método onCreate () da sua atividade:
Execute este código. Isso irá gerar a chave de hash. Copie este KeyHash na configuração do aplicativo do Facebook e salve as alterações. Em seguida, faça login no seu aplicativo. Isso também funcionará perfeitamente no futuro.
fonte