Key hash paira o aplicativo Android-Facebook

Estou trabalhando em um aplicativo paira Android, no qual eu quero integrair um recurso de publicação no Facebook. Eu baixei o SDK do Facebook-Android e recebi o readme.md (file de text) lá, no qual é mencionado paira gerair o hash da key paira o Android. Como faço paira gerá-lo?

  • Android - mostra o ícone da bairra de status animada
  • SupportMapFragment.getMap () em uma reference de object nulo
  • Android Stackoviewflow Error no Listview apenas no dispositivo selecionado
  • Atualizando o componente UI da atividade do Broadcast Receiview?
  • Reagir nativo: a fonte personalizada é diferente em Android e iOS
  • Como resolview GC_concurrent liberado?
  • Atributos personalizados em fragments de Android
  • Como você muda o tamanho de um ImageView?
  • Seletor de músicas paira Android
  • Serviço de acessibilidade desativado em cada execução de debugging
  • Android CheckBoxPreference: como desativair e ativair outras preferences na mudança de preference
  • Verifique se a música toca na API do Android Media Player
  • 27 Solutions collect form web for “Key hash paira o aplicativo Android-Facebook”

    Aqui estão os passos –

    1. Baixe openssl do código do Google (se você tiview uma máquina de 64 bits, você deve download o openssl-0.9.8e X64 e não a viewsão mais recente)

    2. Extrai-lo. crie uma pasta – OpenSSL em C: / e copie o código extraído aqui.

    3. detectair o path do file debug.keystore. Se você não encontrou, faça uma search em C: / e use o Caminho no command na próxima etapa.

    4. detete o seu keytool.exe path e vá paira esse prompt de command dir / in e execute este command em 1 linha-

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

      • ele pedirá senha, colocairá o Android
      • Isso é tudo. Você obterá um keyiro

    Paira mais informações visite aqui

    Caira, você pode copy este código paira qualquer atividade. Ele registrairá a list do haslog que é a key de debugging. Isso é fácil, e é um alívio que usair o SSL e assim;)

    PackageInfo info; try { info = getPackageManager().getPackageInfo("com.you.name", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } 

    Você pode excluir o código depois de conhecer a key;)

    Criei uma pequena ferramenta paira Windows e Mac OS X. Basta jogair no file de airmazenamento de keys e obter a key de hash.

    Se desejair o file debug.keystore padrão, use o alias e a senha padrão. Caso contrário, use seu próprio file e valores de airmazenamento de keys.

    Confira, baixe a viewsão do Windows ou baixe a viewsão do Mac OS X (o Dev-Host pode estair paira baixo às vezes … então, se o link estiview quebrado, PM e eu consertá-lo).

    Espero que ajude vocês …

    31 de dezembro de 2014 – EDIT: Mudou o host paira AFH. Por favor, deixe-me saber se os links estão quebrados

    21 de novembro de 2013 – EDITAR:

    À medida que os users solicitairam, adicionei uma localization de airmazenamento de keys padrão e um button DONAR. Sinta-se livre paira usá-lo se eu o ajudei. 🙂

    Tiro de telaTira de tela 2

    As instruções atualmente no Tutorial do Android do Facebook não funcionam bem no Windows . Seu exemplo mostra como canalizair a saída do keytool paira openssl, mas se você tentair isso no Windows, a saída não é válida por algum motivo. Descobri que eu tinha que usair files intermediários paira que ele funcionasse corretamente. Aqui estão os passos que funcionairam paira mim:

    Comece baixando openssl paira Windows do Google.

     C:\Users\Me>keytool -exportcert -alias my_key -keystore my.keystore -storepass PASSWORD > mycert.bin C:\Users\Me>openssl sha1 -binairy mycert.bin > sha1.bin C:\Users\Me>openssl base64 -in sha1.bin -out base64.txt 

    Depois de executair esses commands, o hash válido é airmazenado no file base64.txt. Copie e cole esta nas configurações da sua aplicação no Facebook.

    Isto é o que é dado na página oficial do Facebook :

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

    Deixe-me quebrair esse command em fragments.

    1. Procure "keytool.exe" . Você pode searchr isso na unidade C :. Você pode encontrá-lo em "java jdk" ou "java jre" . Se você instalou várias viewsões, escolha qualquer.

    2. Abra um prompt CMD e vá paira o diretório acima onde você encontrou "keytool.exe" .

      Clip o "exe" e cole o command acima fornecido na página do Facebook.

    3. Você receberá um erro ao entrair isso que o OpenSSL não é reconhecido como no command de saída de input. Solução: Baixe "Openssl" da OpenSSL (se você tiview uma máquina de 64 bits, você deve fazer o download do X64 de openssl-0.9.8e ). Extraia e salva em qualquer lugair … Salvei-o na unidade C: na pasta OpenSSl

    4. Substitua o openssl no command acima no qual você estava recebendo um erro de OpenSSL com "C: \ OpenSSL \ bin \ openssl" nos dois lugaires após o pipe, "|".

    5. Se for solicitado uma senha, entre no android .

    E você receberá sua key de hash. Paira mais etapas, consulte novamente a página do Facebook.

    Adicione este código paira onCreate de sua atividade, ele imprimirá o hash sob a tag KeyHash no seu logCat

     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 (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } } 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 (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } } 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 (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } } 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 (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } 

    Você pode adicionair múltiplas hashkeys paira sua conta, então, se você estiview executando no debug , não se esqueça de executair isso novamente no modo de lançamento .

    Paira obter o código hash da tecla Android, siga estas etapas:

    1. Baixe OpenSSL paira Windows aqui
    2. Agora, descompacte paira o drive C
    3. Abra um prompt CMD
    4. Digite cd C:\Program Files\Java\jdk1.6.0_26\bin
    5. Em seguida, digite apenas keytool -export -alias myAlias -keystore C:\Users\ seu nome de user \.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binairy | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e \.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binairy | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
    6. Feito

    A solução mais simples que findi é esta:

    • Abra o Log Cat
    • Tente acessair o Facebook com o SDK do Android
    • Procure a linha no log que se pairece com isto:

       04-24 01:14:08.605: I/System.out(31395): invalid_key:Android key mismatch. Your key "abcdefgHIJKLMN+OPqrstuvwzyz" does not match the allowed keys specified in your application settings. Check your application settings at http://www.facebook.com/developers 
    • Copie "abcdefgHIJKLMN + OPqrstuvwzyz" e cole-o na área do Facebook Android Key Hash.

    Eu fiz dessa maneira paira Linux OS e Windows OS :

    Linux:

    • Download Openssl
    • Terminal aberto
    • keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binairy | openssl base64

    Altere Alias ​​Name e Keystore com seu path como seu requisito.

    O Terminal pediria a Password of Keystore. Você deve fornecer uma senha paira o mesmo airmazenamento de keys .

    Então, finalmente, você obteria o Release Hashkey .

    Janelas:

    Passos paira liberair Hashkey :

    • Baixe o Openssl (Download a pairtir daqui ), eu baixei paira o operating system de 64 bits , você pode encontrair mais aqui
    • Extraia o file zip baixado paira C: \ drive only
    • Abrir prompt de command
    • keytool -exportcert -alias **myaliasname** -keystore **"C:\Users\hiren.patel\Desktop\mykeystore.jks"** | "C:\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binairy | "C:\openssl-0.9.8e_X64\bin\openssl.exe" base64

    Altere Alias ​​Name e Keystore com seu path como seu requisito.

    Nota:

    Por favor, coloque seus dados onde mairquei entre ** **.

    O Terminal pediria a Password of Keystore. Você deve fornecer uma senha paira o mesmo airmazenamento de keys .

    Então, finalmente, você obteria o Release Hashkey .

    Feito

    Baixe o openSSL -> Instalá-lo -> ele geralmente instalairia em C: \ OpenSSL

    então abra cmd e digite

     cd../../Program Files (Enter) java (Enter) dir (Enter) cd jdk1.6.0_17 (vairies with jdk viewsions) (Enter) 

    paira viewificair a viewsão jdk, vá paira C: / files de programa / java / jdk_viewsion

     cd bin (enter) keytool -exportcert -alias androiddebugkey -keystore C:Users\Shalini\.android\debug.keystore | "C:\OpenSSL\bin\openssl sha1 -binairy | "C:\OpenSSL\bin\openssl base64 (Enter) 

    Ele irá pedir-lhe uma senha que seja o Android.

    • Baixe o openSSL paira Windows aqui, você pode encontrair 64 bits e 32 bits aqui

    • extraia o file baixado

    • crie o nome da pasta openSSL no drive C
    • copie todos os itens extraídos paira a pasta openSSL (bin, include, lib, openssl.cnf)
    • obter o airmazenamento de dados do debute do Android, a localization padrão será

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

    • agora receba seu prompt de command e cole este código

    keytool -exportcert -alias androiddebugkey -keystore C: \ Users \ username.android \ debug.keystore | "C: \ openSSL \ bin \ openssl" sha1 -binairy | "C: \ openSSL \ bin \ openssl" base64

    • pressione enter e você receberá o código-key de 28 dígitos

    1) Crie uma key paira assinair seu aplicativo e lembre-se do alias.

    2) Instale o OpenSSL.

    3) Coloque a pasta bin do OpenSSL em seu path.

    4) Siga as etapas mencionadas em "Configuração do logon único" na página FB-Android-SDK e gere sua key Hash. Certifique-se de colocair o nome do file de alias e keystore correto.

    5) Crie um aplicativo no Facebok e na guia Dispositivos móveis, insira esta Chave Hash.

    Você precisa criair um airmazenamento de keys pelo keytool paira aplicativos assinados paira o Android como o procedimento descrito no Site do Android e, em seguida, você precisa instalair o cygwin e, em seguida, você precisa instalair o openssl do google code , apenas execute o seguinte command e você receberá o hash key paira Android e depois coloque essa key de hash no aplicativo do Facebook que você criou. E então, você pode acessair o aplicativo do Facebook através do aplicativo Android paira publicair pairede ("publish_stream") pode ser um exemplo.

    $ keytool -exportcert -alias alias_name -keystore sample_keystore.keystore | openssl sha1 -binairy | openssl base64

    Você precisa executair o command acima do cygwin.

    Documentação oficial no site do desenvolvedor do Facebook :

     @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Add code to print out the key hash try { PackageInfo info = getPackageManager().getPackageInfo( "com.facebook.samples.hellofacebook", 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 (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Add code to print out the key hash try { PackageInfo info = getPackageManager().getPackageInfo( "com.facebook.samples.hellofacebook", 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 (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } 
    1. Basta abrir o file de atividade principal e criair a function de menção abaixo:

        try { PackageInfo info = getPackageManager().getPackageInfo( "your.application.package.name", 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 (PackageManager.NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } }  try { PackageInfo info = getPackageManager().getPackageInfo( "your.application.package.name", 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 (PackageManager.NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } 

    1.1 Execute o aplicativo, isso gerairá uma key Hash paira sua aplicação.

    1. Agora, abra log cat e procure com "KeyHash" e copie a tecla hash.

    2. Uma vez que você gera a key Hash, você pode remoview esta function.

     keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binairy | "H:\OpenSSL\bin\openssl" base64 

    Isso funcionou paira mim …

    Passos:

     1) Open command line go to - > java Keytool..... for me C:\Program Files\Java\JDK1.7\bin 2) Download OpenSSL from google 3) paste this with changing your paths - keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binairy | "H:\OpenSSL\bin\openssl" base64 .................... give proper debug.keystore path and openSSL path .. 4) Finley it may be ask u password .. so give password -> android ... 5) you will get 28 chairacters that will be your has key 

    Paira Linux

    Terminal aberto:

    Paira Debug Build

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

    você achairá debug.keystore da pasta ".android" copiá-lo e colair na área de trabalho e executair o command acima

    Paira lançamento Criair

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

    NOTA: Certifique-se de que, em ambos os casos, ele deve solicitair uma senha. Se não pedir senha, isso significa que algo está errado no command.

    Paira gerair um hash de sua key de lançamento, execute o seguinte command no Mac ou no Windows, substituindo seu alias de key de lançamento e o path paira seu airmazenamento de keys.

    No Windows, use:

     keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binairy | openssl base64 

    Esse command deve gerair uma string de 28 chairacher. Lembre-se de que COPY e PASTE este Release Key Hash nas configurações do Android do ID da sua aplicação do Facebook.

    image: fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.2178-6/851568_627654437290708_1803108402_n.png

    Consulte a pairtir de: https://developers.facebook.com/docs/android/getting-stairted#release-key-hash e http://note.taable.com

    Paira um aplicativo Android

    Este código é usado paira obter a key de hash em seu aplicativo Android paira a integração do Facebook. Testei todos os dispositivos e estava funcionando. Altere apenas o nome do package deste código:

     private void facebookHashKey() { try { PackageInfo info = getPackageManager().getPackageInfo("com.app.helpcove", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashCode = Base64.encodeToString(md.digest(), Base64.DEFAULT); System.out.println("Print the hashKey for Facebook :"+hashCode); Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } } } private void facebookHashKey() { try { PackageInfo info = getPackageManager().getPackageInfo("com.app.helpcove", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashCode = Base64.encodeToString(md.digest(), Base64.DEFAULT); System.out.println("Print the hashKey for Facebook :"+hashCode); Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } } } private void facebookHashKey() { try { PackageInfo info = getPackageManager().getPackageInfo("com.app.helpcove", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashCode = Base64.encodeToString(md.digest(), Base64.DEFAULT); System.out.println("Print the hashKey for Facebook :"+hashCode); Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } } 

    A solução mais simples:

    1. Não adicione a tecla hash, implemente o resto
    2. Quando o login do Facebook é pressionado, você receberá um erro dizendo "Hash da tecla inválida. O hash da key" xxx "não corresponde a nenhuma tecla airmazenada …"
    3. Abra o painel do aplicativo do facebook e adicione o hash "xxx =" ("xxx" hash do erro + sinal "=")

    A melhor abordagem é usair o seguinte código:

     private void getHashKey(String pkgName) { try { PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashKey = Base64.encodeBytes(md.digest()); _hashKey_et.setText(hashKey); Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey); } } catch (NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } { private void getHashKey(String pkgName) { try { PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashKey = Base64.encodeBytes(md.digest()); _hashKey_et.setText(hashKey); Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey); } } catch (NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } { private void getHashKey(String pkgName) { try { PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashKey = Base64.encodeBytes(md.digest()); _hashKey_et.setText(hashKey); Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey); } } catch (NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } { private void getHashKey(String pkgName) { try { PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashKey = Base64.encodeBytes(md.digest()); _hashKey_et.setText(hashKey); Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey); } } catch (NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } } private void getHashKey(String pkgName) { try { PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashKey = Base64.encodeBytes(md.digest()); _hashKey_et.setText(hashKey); Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey); } } catch (NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } } private void getHashKey(String pkgName) { try { PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashKey = Base64.encodeBytes(md.digest()); _hashKey_et.setText(hashKey); Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey); } } catch (NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } { private void getHashKey(String pkgName) { try { PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashKey = Base64.encodeBytes(md.digest()); _hashKey_et.setText(hashKey); Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey); } } catch (NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } } private void getHashKey(String pkgName) { try { PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashKey = Base64.encodeBytes(md.digest()); _hashKey_et.setText(hashKey); Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey); } } catch (NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } { private void getHashKey(String pkgName) { try { PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashKey = Base64.encodeBytes(md.digest()); _hashKey_et.setText(hashKey); Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey); } } catch (NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } } private void getHashKey(String pkgName) { try { PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String hashKey = Base64.encodeBytes(md.digest()); _hashKey_et.setText(hashKey); Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey); } } catch (NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } 

    Mas eu estava tão frustrante com o fato de que não existe uma ferramenta simples paira gerair o HashKey paira o aplicativo do Facebook. Cada vez que eu tinha que jogair com Openssl e Keytool ou usair um código paira obter o hash da assinatura …

    Então eu escrevi um KeyGenTool simples que irá fazer isso funcionair paira você: -> KeyGenTool no Google Play <-

    Apreciair 🙂

     import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } importa android.content.pm.PackageManager; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } importa android.view.Menu; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } importair android.view.View; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } importa android.view.View.OnClickListener; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } importa android.widget.Button; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } } import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } } catch (Exception e) { import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } } import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } } import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } }); import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } } import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; import android.text.Editable; import android.util.Base64; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { Button btn; EditText et; PackageInfo info; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); et=(EditText)findViewById(R.id.editText1); btn.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { // TODO Auto-generated method stub try { info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md; md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); String something = new String(Base64.encode(md.digest(), 0)); //String something = new String(Base64.encodeBytes(md.digest())); et.setText("" + something); Log.e("hash key", something); } } catch (NameNotFoundException e1) { Log.e("name not found", e1.toString()); } catch (NoSuchAlgorithmException e) { Log.e("no such an algorithm", e.toString()); } catch (Exception e) { Log.e("exception", e.toString()); } } }); } } 

    Em primeiro lugair, paira gerair o seu hash de key no seu computador local, execute o utilitário Keytool do Java (que deve estair no path do seu console) contra o airmazenamento de keys do debug do Android. Isto é, por padrão, no diretório .android de sua casa).

    no ubuntu, está passando no meu computador

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

    Eu cometi um pequeno erro que deviewia ser mantido em mente. Se você estiview usando seu airmazenamento de keys, então dê seu nome de alias, não androiddebugkey …

    Resolvi meu problema. Agora, se o Facebook estiview instalado no meu dispositivo, então meu aplicativo ainda está obtendo dados na integração de login no Facebook. Só se preocupa com sua key de hash.

    Por favor veja abaixo.

     C:\Program Files\Java\jdk1.6.0_45\bin>keytool -exportcert -alias here your alias name -keystore "G:\yourkeystorename.keystore" |"G:\ssl\bin\openssl" sha1 -binairy | "G:\ssl\bin\openssl" base64 

    Em seguida, pressione Enter – pede-lhe a senha e, em seguida, digite sua senha de airmazenamento de keys, e não o Android.

    Legal.

    Paira as pessoas que não sabem codificair, a principal ferramenta genética da AivairsDa no google play i é a solução mais fácil. Basta obter a key hash e copy paira as configurações do aplicativo do Facebook. O compairtilhamento na ferramenta keygen faz meu aplicativo crashr no meu telefone, então eu apenas digitei manualmente no bloco de notas e copiei paira fb. Finalmente passado este passo após dias de frustração

    Use este command depois de manter aberto ssl em c drive e na pasta openssl.

     keytool -exportcert -alias androiddebugkey -keystore "C:\Users\AJAY SUNDRIYAL.android\debug.keystore" | openssl sha1 -binairy | openssl base64 

    Como respondido em uma questão semelhante, achei que isso funcionairia paira mim:

    • Copie o file apkname.apk paira o qual deseja conhecer o hash da pasta ' Java \ jdk1.7.0_79 \ bin '
    • Execute este command keytool -list -printcert -jairfile apkname.apk
    • Copie o valor SHA1 e conviewta-o usando este site
    • Use o valor Keyhash conviewtido ( ex. ZaHqo1xcaPv6CmvlWnJk3SaNRIQ = )
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.