Como criar o Android Facebook Key Hash?

182

Eu não entendo esse processo. Consegui navegar para a pasta que contém a ferramenta de chaves no Java SDK. Embora eu continue recebendo o erro, o openssl não é reconhecido como um comando interno ou externo. O problema é que, mesmo que eu consiga fazer isso funcionar, o que eu faria e com o que depois?

Somk
fonte
se você estiver usando mais recente SDK facebook e se você botou seu api facebook perfeitamente então quando entrar você clicar no login no facebook, em seguida, em sua logcat a chave de hash é impresso ..
Mehul Ranpara
para gerar seu hash de chave no computador local, execute o utilitário keytool do Java (que deve estar no caminho do console) no keystore de depuração do Android. Por padrão, está no diretório .android inicial). No OS X, execute: keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android / debug.keystore | openssl sha1 -binário | openssl base64 No Windows, use: - keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% \. android \ debug.keystore | openssl sha1 -binário | openssl base64
Rakesh
Por que alguém iria querer criar uma chave de depuração?
Anders Lindén
Eu criei o hash da chave, mas não sei onde colocá-la, você me orientaria? Estou executando o android studio no Ubuntu.
Apurva

Respostas:

242

Aqui está o que você precisa fazer -

Faça o download do openSSl no código Extraia-o. crie uma pasta - OpenSSL em C: / e copie o código extraído aqui.

detectar o caminho do arquivo debug.keystore. Se você não encontrou, faça uma pesquisa em C: / e use o Path no comando na próxima etapa.

detecte o caminho do keytools.exe e vá para o prompt de comando dir / in e execute este comando em 1 linha

$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64

vai pedir senha, colocar android é tudo. você receberá um hash de chave

coder_For_Life22
fonte
quando ele pede uma senha posso colocar o que eu quiser?
Somk
5
@ Max, a senha padrão é android.
jamapag 21/09/11
2
hash da chave não encontrou nenhum hashes chaves armazenadas para Android, não funciona
Boldijar Paul
1
Primeiro, crie um keystore acessando Build -> Build Apk no seu estúdio. forneça um nome e uma senha etc. Armazene-o como um arquivo .jks em uma pasta facilmente acessível. Agora copie o caminho e gere a chave, substituindo esse caminho na resposta acima mencionada.
buggydroid
1
Ele mostra um erro: "... Expressões são permitidas apenas como o primeiro elemento de um pipeline. Na linha: 1 caractere: 184 ... O token inesperado 'sha1' na expressão ou na instrução. ... Expressões são permitidas apenas como o primeiro elemento de um pipeline ... token inesperado 'base64' na expressão ou na instrução. + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId: ExpressionsMustBeFirstInPipeline "
desenvolvedor Android em
175

Para Linux e Mac

Terminal aberto:

Para construção de depuração

keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64

Você encontrará debug.keystore na pasta ".android". Copie e cole na área de trabalho e execute o comando acima.

Para versão Build

keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64

NOTA: Verifique se, nos dois casos, ele solicita uma senha. Se não solicitar uma senha, significa que algo está errado no comando. A senha para debug.keystore é " android " e, para a liberação, você deve inserir a senha definida durante a criação do keystore .

Biraj Zalavadia
fonte
3
Para ficar claro, a senha está vazia. Basta pressionar <enter> quando solicitado.
Tom Redman
Eu criei o hash da chave, mas não sei onde colocá-la, você me orientaria? Estou executando o android studio no Ubuntu.
Apurva
1
Esta nota: "OBSERVAÇÃO: verifique se, nos dois casos, ele solicita uma senha. Se não solicitar uma senha, significa que algo está errado no comando". foi essencial para resolver o problema
Bleno Silva 10/11
Obrigado por salvar minha vida. im tyiping minha senha mac para a senha de armazenamento de chaves o tempo todo e eu percebi que estava errado
Sorte Angelo
1
Mesmo pedir uma senha não significa que está tudo bem (senha incorreta, alias de chave incorreta). Corra keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath>sozinho, primeiro, para ver se está tudo bem. Além disso, quando canalizado, o keytool está no modo não interativo e mostra a senha em texto sem formatação quando você a digita. Então é melhor você escrever um pequeno script que execute os comandos separadamente.
Pierre Pierre
98

Por favor tente isto:

public static void printHashKey(Context pContext) {
        try {
            PackageInfo info = pContext.getPackageManager().getPackageInfo(pContext.getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String hashKey = new String(Base64.encode(md.digest(), 0));
                Log.i(TAG, "printHashKey() Hash Key: " + hashKey);
            }
        } catch (NoSuchAlgorithmException e) {
            Log.e(TAG, "printHashKey()", e);
        } catch (Exception e) {
            Log.e(TAG, "printHashKey()", e);
        }
    }
Maddy
fonte
Eu criei o hash da chave, mas não sei onde colocá-la, você me orientaria? Estou executando o android studio no Ubuntu.
Apurva
este é o caminho a percorrer
Tintinabulator Zea
1
Isso funciona, se você chamar pContext.getPackageInfo. Ou simplesmente remova-o de uma função e chame-o no onCreate de qualquer atividade.
Dpedrinha 24/03
1
Agora, parece ser getPackageManager (). GetPackageInfo ([nome-do-seu-pacote], PackageManager.GET_SIGNATURES)
Até
@Apurva Você pode colocá-lo no Android SharedPreferences, caso tenha algum uso posterior disso.
Maddy
49

OpenSSL: Você deve instalá-lo se ele não vier pré-instalado com o sistema operacional (por exemplo, o Windows não o possui pré-instalado) . Como instalar isso depende do seu sistema operacional (para Windows, verifique o link fornecido por coder_For_Life22).

A maneira mais fácil, sem se preocupar, é copiar o binário openssl.exe para o caminho da ferramenta de chaves, se você estiver no Windows. Se você não quiser fazer isso, precisará adicioná-lo à sua PATHvariável de ambiente. Em seguida, execute o comando fornecido nos documentos.

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Observe que o argumento depois -keystoreaponta para seu keystore de depuração. Esse local também depende do seu sistema operacional. Deve estar em um dos seguintes locais:

  • Windows Vista ou 7 - C: \ Usuários \ .android \ debug.keystore
  • Windows XP - C: \ Documentos e configurações \ .android \ debug.keystore
  • OS X e Linux - ~ / .android / debug.keystore

Se você fez tudo certo, deve ser solicitada uma senha. Isso é androidpara o certificado de depuração. Se a senha estiver correta, o console imprimirá um hash (caracteres e números aleatórios).

Pegue isso e copie-o no android key hashcampo dentro das preferências do seu aplicativo no facebook. Para chegar lá, vá para developers.facebook.com/apps , selecione seu aplicativo, vá para Edit settingse role para baixo. Depois disso, aguarde alguns minutos até que as alterações entrem em vigor.


fonte
Eu executei isso no cmd e ele exibiu uma lista muito longa de caracteres parecidos com um hash terminado com um sinal = e nada $ keytool -exportcert -alias androiddebugkey -keystore "C: \ Usuários \ .android \ debug.keystore" | "C: \ OpenSSL \ bin \ openssl" sha1 -binário | "C: \ OpenSSL \ bin \ openssl" base64
Somk
Parece correto. Acabei de testar na minha máquina, tinha 28 caracteres para mim, apenas para lhe dar uma idéia. Agora basta copiar e você está bem. :)
eu não fui solicitado a usar o android pharse embora. Desculpe, estou sendo lento?
Somk
Para ser sincero, não sei por que você não foi solicitado. Mas parece correto para mim. Quero dizer, se você tivesse feito algo errado, deveria haver uma mensagem de erro. Basta copiar e ver se funciona. Você pode testar algumas das consultas de gráfico com o Graph API Explorer . Selecione seu aplicativo na parte superior e veja se você obtém resultados válidos. Deve cuspir um erro se houver algo errado. Edit: E nada de errado em ser lento. Não estamos com pressa. :)
24

para gerar seu hash de chave no computador local, execute o utilitário keytool do Java (que deve estar no caminho do console) no keystore de depuração do Android. Por padrão, isso está no diretório .android inicial). No OS X, execute:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

No Windows, use: -

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

espero que isso ajude você

Ref - desenvolvedor facebook site

Rakesh
fonte
Eu criei o hash da chave, mas não sei onde colocá-la, você me orientaria? Estou executando o android studio no Ubuntu.
Apurva
19

Aqui estão os detalhes completos (para Windows)

1. Faça o download do OpenSSl 3º ou 4º (com o e funcionará melhor) com base no sistema 32 bits ou 64 bits.

2) Extraia o zip baixado dentro do diretório C

3. Abra a pasta extraída até a lixeira e copie o caminho, deve ser algo comoC:\openssl-0.9.8k_X64\bin\openssl (add \ openssl no final)

4) (Obtenha o caminho para a pasta bin do Jdk, se você souber como, ignore).

Abra o android studio ~ arquivo ~ estrutura do projeto (ctrl + alt + shift + s), selecione o local do SDK no painel esquerdo, copie o local do JDK e inclua / bin nele

Então a localização final do JDK será como C:\Program Files\Android\Android Studio\jre\bin

estamos seguindo este método para obter a localização do Jdk porque você pode usar o jdk incorporado como eu

insira a descrição da imagem aqui

agora você tem localização OpenSSl e localização JDK

5. agora precisamos de um local de depuração do keystore, para que C ~> Users ~> YourUserName ~> .android abra um nome de arquivo debug.keystore, agora copie o local do caminho, deve ser algo como

C:\Users\Redman\.android\debug.keystore

6. agora abra o prompt de comando e digite command

cd YourJDKLocationFromStep4  

No meu caso

 cd "C:\Program Files\Android\Android Studio\jre\bin"

7. agora construa o seguinte comando

keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

no meu caso, o comando será semelhante

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64

Agora, insira este comando no prompt de comando; se você acertou, será solicitada uma senha (a senha é android)

Enter keystore password:  android

é isso, você receberá o Key Hash, basta copiá-lo e usá-lo

Para KeyHash assinado, construa o seguinte comando

keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

digite sua senha do keystore. Se você digitar a senha errada, o KeyHash será errado

NOTA

Se por algum motivo, se der algum erro em algum caminho, envolva-o entre aspas duplas. Além disso, o shell de energia do Windows não estava funcionando bem para mim, usei o git bash (ou use o prompt de comando).

exemplo

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64
Manohar Reddy
fonte
1
Muito obrigado, este é um guia muito detalhado para iniciantes!
Pablo Quemé 15/09
@TamimProduction tente o mesmo procedimento acima com a versão k do openssl e consulte code.google.com/archive/p/openssl-for-windows/downloads
Manohar Reddy
@TamimProduction se você digitar uma senha incorreta, ela retornará um keyhash errado. Também você construiu o apk novamente após excluir o keystore?
Manohar Reddy
@TamimProduction Baixe e instale o aplicativo do Facebook, faça o login no aplicativo do facebook. abra seu aplicativo e faça login no facebook. Ele fornecerá o hash da chave no aplicativo do facebook, verifique se é o mesmo que o seu.
Manohar Reddy
Vamos continuar esta discussão no chat .
Tamim Attafi 25/02/19
18

Você pode simplesmente usar o javascript de uma linha no console do navegador para converter uma chave de mapa hexadecimal em base64. Abra o console no último navegador (F12 no Windows) e cole o código e substituir o SHA-1, SHA-256mapa hexagonal que o Google Play oferece sob Release Managment> App signing:

> btoa('a7:77:d9:20:c8:01:dd:fa:2c:3b:db:b2:ef:c5:5a:1d:ae:f7:28:6f'.split(':').map(hc => String.fromCharCode(parseInt(hc, 16))).join(''))
< "p3fZIMgB3fosO9uy78VaHa73KG8="
Christos Lytras
fonte
1
Você é um salva-vidas, obrigado
Yusuf Adeyemo
SHA-1 foi o único.
Travo
16

Há uma solução curta também. Basta executar isso no seu aplicativo:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));

Um mais longo que não precisa do SDK do FB (com base em uma solução aqui ):

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

O resultado deve terminar com "=".

desenvolvedor android
fonte
1
Percebi que meu hash de chave possui um '_' que não é permitido pelo FB. Para usar o hash, tive que alterá-lo para '/'.
Abdelalim Hassouna
A função Facebook retornou minha chave, pois -AAAAAAAA_AAAAAA-AAAAAAAAAAisso não é permitido pelo Facebook, printHashKey retornou a chave em um formato válido+AAAAAAAA/AAAAAA+AAAAAAAAAA=
GrafOrlov
@GrafOrlov Que estranho. Talvez eles tenham um bug em alguma nova versão do FB SDK. Você deve informar sobre isso a eles.
desenvolvedor android
9

Para Windows:

  1. abra o prompt de comando e cole o comando abaixo

keytool -exportcert -alias androiddebugkey -keystore% HOMEPATH% .android \ debug.keystore | openssl sha1 -binário | openssl base64

  1. Digite a senha: android -> Pressione Enter

  2. Copiar chave de hash gerada -> Entre no Facebook com sua conta de desenvolvedor

  3. Vá para o seu aplicativo no Facebook -> Configurações -> Colar chave Hash na opção "key hashes" -> salvar as alterações.

  4. Agora teste seu aplicativo Android com o Facebook Login / Share etc.

swiftBoy
fonte
Eu criei o hash da chave, mas não sei onde colocá-la, você me orientaria? Estou executando o android studio no Ubuntu.
Apurva
Oi, Eu sou capaz de gerar chave de hash via código na minha atividade principal, mas essa chave de hash gerada só funciona em um único dispositivo. Quando instalo o mesmo apk em outro dispositivo e corro o erro de chave de hash inválido. Há alguma coisa que estou perdendo.
Deepak
8

Desde a API 26, você pode gerar suas HASH KEYS usando o código a seguir no KOTLIN sem precisar do SDK do Facebook.

fun generateSSHKey(context: Context){
    try {
        val info = context.packageManager.getPackageInfo(context.packageName, PackageManager.GET_SIGNATURES)
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            val hashKey = String(Base64.getEncoder().encode(md.digest()))
            Log.i("AppLog", "key:$hashKey=")
        }
    } catch (e: Exception) {
        Log.e("AppLog", "error:", e)
    }

}

insira a descrição da imagem aqui

Hanny
fonte
Você quer dizer que eu coloquei seu código em class MainActivity: FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) GeneratedPluginRegistrant.registerWith(this) } }
asdfasdf
6

Foi assim que obtive o meu:

private class SessionStatusCallback implements Session.StatusCallback {
        @Override
        public void call(Session session, SessionState state, Exception exception) {

            if (exception != null) {
                new AlertDialog.Builder(FriendActivity.this)
                        .setTitle(R.string.login_failed_dialog_title)
                        .setMessage(exception.getMessage())
                        .setPositiveButton(R.string.ok_button, null)
                        .show();
            }

Portanto, quando você estiver tentando entrar sem a chave, ocorrerá uma exceção. O Facebook colocou a chave DIREITA nessa exceção. Tudo que você precisa fazer é copiá-lo.

Valikpon
fonte
Eu criei o hash da chave, mas não sei onde colocá-la, você me orientaria? Estou executando o android studio no Ubuntu.
Apurva
6

Se você já fez o upload do aplicativo na Play Store, pode gerar a Hash Key da seguinte maneira:

1) Vá para Gerenciamento de Liberação aqui

2) Selecione Gerenciamento de liberação -> Assinatura de aplicativo

3) Você pode ver a chave SHA1 no certificado de assinatura do aplicativo em formato hexadecimal.


4) Copie o SHA1 no formato hexadecimal e converta-o para o formato base64. Você pode usar este link sem a parte SHA1: hexadecimal.


5) Vá para o console do desenvolvedor do Facebook e adicione a chave (depois de converter para a base 64) nas configurações -> básico -> hashes de chave.

SumiSadiq
fonte
5

Para facilitar o link do tutorial vedio para o KeyHash gerar aqui

Faça o download do openssl AQUI

Arpit Patel
fonte
3

Faça o download do ssl aberto :

Em seguida, adicione openssl \ bin às variáveis ​​do sistema de caminho:

Meu computador -> propriedades -> Configurações avançadas -> Avançadas -> Variáveis ​​do sistema -> nas variáveis ​​do sistema, localize o caminho e adicione-o aos seus finais:; yourFullOpenSSLDir \ bin

Agora abra uma linha de comando na pasta jdk \ bin C: \ Arquivos de Programas \ Java \ jdk1.8.0_40 \ bin (no Windows, mantenha pressionada a tecla Shift e clique com o botão direito do mouse -> abrir linha de comando aqui) e use:

keytool -exportcert -alias keystorealias -keystore C:\yourkeystore\folder\keystore.jks | openssl sha1 -binary | openssl base64

E copie o número de 28 comprimentos que gera depois de fornecer a senha.

sagits
fonte
Eu não vi que a resposta original já tem o link openssl. Mas ainda é útil para a variável do sistema.
sagits
Eu criei o hash da chave, mas não sei onde colocá-la, você me orientaria? Estou executando o android studio no Ubuntu.
Apurva
Claro, você tem certeza que gerou o número 28? Nesse caso, agora você precisa acessar o site de desenvolvedores do Facebook (pesquisar no google) e criar um novo aplicativo, nas configurações, você pode adicionar um novo aplicativo Android, colar o keyhash e o nome da atividade (onde o código de login está localizado ) Há um tutorial sobre isso no Facebook também
sagits
Obrigado pela resposta rápida, eu vou experimentá-lo logo
Apurva
3

Execute isso no seu aplicativo:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"=");

Ou isto:

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

E então olhe para os logs.

O resultado deve terminar com "=".

A solução é baseada aqui e aqui .

desenvolvedor android
fonte
3

EASY WAY -> Não instale o openssl -> USE GIT BASH!

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

A senha padrão é "android"

A maioria de nós tem o Git Bash instalado, então essa é a minha maneira favorita.

Dmitri R117
fonte
3

isso ajudará os novatos também.

apenas adicionando mais detalhes à resposta de @ coder_For_Life22.

se esta resposta ajudar você não se esqueça de votar. isso nos motiva.

para isso, você já deve saber o caminho do arquivo de keystore e da senha do aplicativo

para este exemplo, considere que a chave está armazenada em "c: \ keystorekey \ new.jks"

1. abra esta página https://code.google.com/archive / p / openssl-for-windows / downloads

2. baixe um arquivo zip de 32 ou 64 bits conforme o sistema operacional Windows.

3. extraia o arquivo baixado onde quiser e lembre-se do caminho.

4. para este exemplo, consideramos que você extraiu a pasta na pasta de download. 5. agora no teclado, pressione windows + botão r. 6. isso abrirá a caixa de execução.

portanto, o endereço do arquivo será "C: \ Usuários \ 0 \ Downloads \ openssl-0.9.8e_X64 \ bin \ openssl.exe";





7. digite cmd e pressione Ctrl + Shift + Enter .

8. isso abrirá o prompt de comando como administrador.

9. navegue até a pasta bin do java:

se você usar o jre fornecido pelo Android Studio, encontrará o caminho da seguinte maneira:
a. Abra o android studio.
b. arquivo-> estrutura do projeto
c. no painel esquerdo, clique em 'local do SDK'
d. no painel direito, abaixo de 'JDK location' é seu caminho para o jre.
e adicione "\ bin" no final deste caminho, pois o arquivo "keytool.exe", precisamos, está dentro desta pasta. se você instalou o java de 32 bits, ele estará em "C: \ Arquivos de Programas (x86) \ Java \ jre-10.0.2 \ bin"
para este exemplo eu considero,
"C: \ Arquivos de Programas \ Java \ jre-10.0.2 \ bin"


10. agora com os caminhos acima, execute o comando da seguinte maneira:

keytool -exportcert -alias androiddebugkey -keystore "c:\keystorekey\new.jks" | "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary |"C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" base64
  1. Você será solicitado a fornecer a senha, forneça a senha que você forneceu ao criar a chave de armazenamento de chaves.

    !!!!!! isso lhe dará a chave

erros: se você obtiver:
---
'keytool' não é reconhecido como um comando interno ou externo
---
isso significa que o java está instalado em outro lugar.

sifr_dot_in
fonte
3

etapa 1-> C: \ Arquivos de Programas \ Java \ jdk1.6.0_43 \ bin>

Etapa 2-> keytool -list -v -keystore C: \ Users \ leon \ .android \ debug.keystore -alias androiddebugkey -storepass android -keypass android

você tem valor SHA1 clique neste link u converte seu valor SHA1 em HASH KEY

tenho 100% de certeza de que este link o ajudará

naveen pandi
fonte
3

Jeito fácil

Ao usar este site, você pode obter o Hash Key convertendo a chave SHA1 em Hash Key for Facebook.

Sai Gopi N
fonte
2

Você pode obter todas as suas impressões digitais em https://console.developers.google.com/projectselector/apis/credentials
E use este código Kotlin para convertê-lo em keyhash:

fun main(args: Array<String>) {
    listOf("<your_production_sha1_fingerprint>",
            "<your_debug1_sha1_fingerprint>",
            "<your_debug2_sha1_fingerprint>")
            .map { it.split(":") }
            .map { it.map { it.toInt(16).toByte() }.toByteArray() }
            .map { String(Base64.getEncoder().encode(it)) }
            .forEach { println(it) }
}
Alexmelyon
fonte
1

https://developers.facebook.com/docs/android/getting-started/

4.19.0 - 25 de janeiro de 2017

SDK do Facebook

Modificado

Agora, o SDK do Facebook é inicializado automaticamente quando o aplicativo é iniciado. Na maioria dos casos, uma chamada manual para FacebookSDK.sdkInitialize () não é mais necessária. Consulte o guia de atualização para mais detalhes.

Para depuração

try {
    PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
    }
} catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}
Ketan Ramani
fonte
1

Basta executar esse código no OnCreateView Or OnStart Actvity e esta função retornará o Hash da chave de desenvolvimento .

private String generateKeyHash() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = (MessageDigest.getInstance("SHA"));
            md.update(signature.toByteArray());
            return new String(Base64.encode(md.digest(), 0));
        }
    }catch (Exception e) {
        Log.e("exception", e.toString());
    }
    return "key hash not found";
}
Hasib Akter
fonte
0

Eu estava tendo o mesmo problema exato, não estava sendo solicitada uma senha e parece que estava com o caminho errado para o arquivo keystore.

De fato, se o keytool não encontrar o keystore que você definiu, ele criará um e fornecerá a chave errada, pois não está usando a correta.

A regra geral é que, se não for solicitada uma senha, você terá a chave errada sendo gerada.

Nick Tsitlakidis
fonte
Eu criei o hash da chave, mas não sei onde colocá-la, você me orientaria? Estou executando o android studio no Ubuntu.
Apurva
0

Você pode usar este apk

1.first install the app from the Google play store
2.install the above apk
3.launch the apk and input the package name of your app
4.then you will get the hash code you want
armnotstrong
fonte
@Elynad É chinês: D
armnotstrong 30/04/19
0

keytool -exportcert -alias androiddebugkey -keystore "C: \ Usuários ** Deepak **. android \ debug.keystore" | " C: \ Users \ Deepak \ ssl \ bin \ openssl" sha1 -binário | " C: \ Users \ Deepak \ ssl \ bin \ openssl" base64

2 Alterações no comando acima 1.Deepak === Substitua pelo sistema USERNAME 2.C: \ Users \ Deepak \ ssl === substitua o caminho do Open SSL

execute este comando e obtenha uma saída como esta

C: \ Users \ Deepak> keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ D eepak.android \ debug.keystore" | "C: \ Users \ Deepak \ ssl \ bin \ openssl" sha1 -binário | "C: \ Users \ Deepak \ ssl \ bin \ openssl" base64 Digite a senha do keystore: ****** ga0RGNY ******************** =

Deepak parmar
fonte