windows - Nøgle hash til Android-Facebook app

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg arbejder på en Android-app, hvor jeg vil integrere en Facebook
udstationering funktion. Jeg hentede Facebook-Android SDK, og jeg fik
readme.md (tekstfilen) deri, hvor det nævnes at generere
nøgle hash til Android. Hvordan genererer jeg det?

Bedste reference


Her er trin-



  1. Download openssl fra Google kode (Hvis du har en 64 bit maskine, skal du download openssl-0.9.8e X64 ikke den nyeste version) [37] [[[38]

  2. Uddrag det. Opret en mappe - OpenSSL i C:/og kopier den udpakkede kode her.

  3. Registrér debug.keystore filsti. Hvis du ikke fandt, så søg i C:/og brug stien i kommandoen i næste trin.

  4. Registrér din keytool.exe-sti og gå til den dir/in-kommandoprompt og kør denne kommando i 1 linje-



      $ keytool -exportcert -alias androiddebugkey -keystore 'C: \ Dokumenter og indstillinger \ Administrator.android \ debug.keystore' | 'C: \ OpenSSL \ bin \ openssl' sha1-binær
      | 'C: \ OpenSSL \ bin \ openssl' base64




    • det vil bede om adgangskode, sæt android

    • det er alt. du vil få en key-hash




For mere information besøg her [39]

Andre referencer 1


Du kan bruge denne kode i enhver aktivitet. Det logger hashkey i logcat, som er debug nøglen. Det er nemt, og det er en lettelse end at bruge SSL.


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


Du kan slette koden efter at have kendt nøglen;)

Andre referencer 2


Jeg har lavet et lille værktøj til Windows og Mac   OS   X. Kaste bare ind i nøglelagerfilen og hent hash-nøglen.


Hvis du vil have standard debug.keystore fil, skal du bruge standard alias og adgangskode. Ellers, brug din egen keystore fil og værdier.


Tjek det ud, download Windows-versionen eller download Mac OS X-versionen
(Dev-Host kan være nede nogle gange ... så hvis linket er brudt, vil PM og jeg reparere det). [40] [41]


Jeg håber det hjælper jer ...


31 dec 2014 - EDIT:
Ændret vært til AFH.
Lad mig vide, om linkene er brudt


21 november 2013 - EDIT:


Som brugere anmodede om, tilføjede jeg en standard nøglelagersted og en DONATE-knap. Du er velkommen til at bruge den , hvis jeg har hjulpet dig. :)


Screen shot
Screen shot 2

Andre referencer 3


Instruktionerne i øjeblikket i Facebook 's Android Tutorial fungerer ikke godt under Windows . Deres eksempel viser, hvordan du kan koble keytool output til openssl, men hvis du prøver dette under Windows, er outputen ikke gyldig af en eller anden grund. Jeg fandt ud af, at jeg måtte bruge mellemliggende filer for at få det til at fungere korrekt. Her er de trin, der fungerede for mig: [42]


Start med at downloade openssl for Windows fra Google. [43]


C:UsersMe>keytool -exportcert -alias my\_key -keystore my.keystore -storepass PASSWORD > mycert.bin

C:UsersMe>openssl sha1 -binary mycert.bin > sha1.bin

C:UsersMe>openssl base64 -in sha1.bin -out base64.txt


Når du har kørt disse kommandoer, gemmes den gyldige hash i filen base64.txt. Kopier og indsæt dette i dine appindstillinger på Facebook.

Andre referencer 4


Dette er hvad der gives på den officielle side af Facebook: [44]


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


Lad mig bryde denne kommando i fragmenter.



  1. Se efter "keytool.exe". Du kan søge det på C: drevet. Du kan finde den i "java jdk" eller "java jre". Hvis du har installeret flere versioner, skal du vælge nogen.

  2. Åbn en CMD-prompt og gå til ovenstående bibliotek, hvor du fandt "keytool.exe".


    Klip 'exe' og indsæt ovenstående kommando på Facebook-siden.

  3. Du får en fejl ved indtastning af dette, så OpenSSL ikke genkendes som input kommandoen.
    Løsning: Download 'Openssl' fra OpenSSL (hvis du har en 64-bit maskine skal du downloade openssl-0.9.8e X64 ). Uddrag og gem det overalt ... Jeg gemte det på C: -drevet i mappen OpenSSl [45] [46]

  4. Udskift openssl i kommandoen ovenfor, hvor du fik en fejl i OpenSSL med 'C: \ OpenSSL \ bin \ openssl' på begge steder efter røret, '|'.

  5. Hvis du bliver bedt om adgangskode, skal du indtaste android.



Og du får din hash-nøgle. For yderligere trin, se igen på Facebook-siden.

Andre referencer 5


Tilføj denne kode til onCreate af din aktivitet, den vil udskrive hash under KeyHash -taggen i din 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) {

}


Du kan tilføje flere hashkeys til din konto, så hvis du har kørt i fejlfinding ikke glem at køre dette igen i frigivelsestilstand .

Andre referencer 6


Følg disse trin for at få Android-nøgle hash-kode:



  1. Download OpenSSL til Windows her

  2. Pak nu ud til C-drevet

  3. Åbn en CMD-prompt

  4. Skriv cd C:Program FilesJavajdk1.6.0\_26in

  5. Skriv derefter kun keytool -export -alias myAlias -keystore C:Users dit brugernavn .androidmyKeyStore | C:openssl-0.9.8k\_WIN32inopenssl sha1 -binary | C:openssl-0.9.8k\_WIN32inopenssl enc -a -e

  6. Udført


Andre referencer 7


Den enkleste løsning jeg har fundet er dette: [47]



  • Åbn Log-log

  • Prøv og få adgang til Facebook med Android SDK

  • Se efter linjen i logfilen, der ser sådan ud:


    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
    

  • Kopier 'abcdefgHIJKLMN + OPqrstuvwzyz' og indsæt det i Facebook Android Key Hash-området.


Andre referencer 8


Jeg har gjort på denne måde til Linux OS & Windows OS :


Linux:




  • Download Openssl

  • Åbn terminal

  • keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binary | openssl base64



Venligst skift Alias ​​Name og Keystore med det's path som dit krav.


Terminal ville spørge for Adgangskode af Keystore. Du skal give adgangskode til den samme Keystore .


Så endelig vil du få Release Hashkey .


Vinduer:



Trin til Slip Hashkey :



  • Download Openssl (Hent herfra), jeg har downloadet til 64 bit OS, du kan finde flere her

  • Udpak den downloadede zip-fil til C: \ drive only

  • Åbn ledetekst

  • keytool -exportcert -alias **myaliasname** -keystore **"C:Usershiren.patelDesktopmykeystore.jks"** | "C:openssl-0.9.8e\_X64inopenssl.exe" sha1 -binary | "C:openssl-0.9.8e\_X64inopenssl.exe" base64



Venligst skift Alias ​​Name og Keystore med det s vej som dit krav. [48] [49]


Bemærk:

Venligst angiv dine detaljer, hvor jeg har markeret mellem ** **.


Terminal ville spørge for Adgangskode af Keystore. Du skal give adgangskode til den samme Keystore .


Så endelig vil du få Release Hashkey .


Udført

Andre referencer 9



  • download openSSL for windows her kan du finde 64bit og 32bit her [50]

  • Udpak den hentede fil

  • Opret mappenavn openSSL i C-drev

  • Kopiér alle uddragne varer i OpenSSL-mappen (bin, include, lib, openssl.cnf)

  • få android debug keystore, vil standard placering være




  C: \ Brugere \ brugernavn \ .android \ debug.keystore




  • Få din kommandoprompt og indsæt denne kode




  keytool -exportcert -alias androiddebugkey -keystore C: \ Brugere \ brugernavn.android \ debug.keystore | 'C: \ openSSL \ bin \ openssl' sha1-binær | 'C: \ openSSL \ bin \ openssl' base64




  • tryk ind, og du vil få 28-cifret nøglekode


Andre referencer 10


Du skal oprette et nøgleforretning ved hjælp af keytool for signerede apps til android som proceduren beskrevet i Android Site, og så skal du installere cygwin, og så skal du installere openssl fra google-kode og derefter udføre følgende kommando, og du vil få hasen nøgle til android og sæt så hash-nøglen ind i facebook-applikationen, du oprettede. Og så kan du få adgang til facebook-applikationen via Android Application for posting wall ('publish\_stream') kunne være et eksempel. [51] [52]


$ keytool -exportcert -alias alias\_name -keystore sample\_keystore.keystore | openssl sha1 -binary | openssl base64


Du skal udføre ovennævnte kommando fra cygwin.

Andre referencer 11


Download openSSL -> Installer det -> det ville normalt installeres i C: \ OpenSSL


Åbn derefter cmd og type


cd../../Program Files (Enter)

java (Enter)

dir (Enter)

cd jdk1.6.0\_17 (varies with jdk versions) (Enter)


for at kontrollere jdk-versionen, gå til C:/programfiler/java/jdk\_version


cd bin (enter)

keytool -exportcert -alias androiddebugkey -keystore C:UsersShalini.androiddebug.keystore | "C:OpenSSLinopenssl sha1 -binary | "C:OpenSSLinopenssl base64 (Enter)


Det vil bede dig om adgangskode, som er android.

Andre referencer 12



  1. Du skal blot åbne hovedaktivitetsfilen og oprette under nævnefunktion:


         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 Kør dig Application, dette vil generere en Hash-nøgle til din ansøgning.



  1. Nu, Åbn log kat og søg med 'KeyHash' og kopier hash-tasten.

  2. En du genererer Hash-tasten, du kan fjerne denne funktion.


Andre referencer 13


1) Opret en nøgle til at underskrive din ansøgning, og husk aliaset.


2) Installer OpenSSL.


3) Sæt bin-mappen på OpenSSL i din vej.


4) Følg de trin, der er nævnt under 'Indstil Single Sign-On' på siden FB-Android-SDK, og generer din Hash-nøgle. Sørg for, at du lægger det korrekte alias og keystore filnavn.


5) Opret et program på Facebok, og under fanen Mobiltelefoner skal du indtaste denne Hash-nøgle.

[53]

Andre referencer 14


Officiel dokumentation på facebook udvikler site: [54]


@Override
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) {

    }

Andre referencer 15


keytool -exportcert -alias androiddebugkey -keystore       C:Userspravin.androiddebug.keystore | "H:OpenSSLinopenssl" sha1 -binary | "H:OpenSSLinopenssl" base64


Dette fungerede for mig ...


Steps:


1) Open command line go to - > java Keytool..... for me C:Program FilesJavaJDK1.7in
2) Download OpenSSL from google
3) paste this with changing your paths -
   keytool -exportcert -alias androiddebugkey -keystore C:Userspravin.androiddebug.keystore | "H:OpenSSLinopenssl" sha1 -binary | "H:OpenSSLinopenssl" 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 characters that will be your has key

Andre referencer 16


Til Linux


Åben terminal:


Til Fejlfinding Build


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


du vil finde debug.keystore fra '.android' -mappen kopiere den fra og indsætte på skrivebordet og køre over kommandoen


For release Build


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


BEMÆRK: Sørg for, at i begge tilfælde skal det bede om adgangskode. Hvis det ikke spørger om adgangskode betyder det, at noget er forkert i kommandoen.

Andre referencer 17


Til en Android-applikation


Denne kode bruges til at få hash-nøglen i din Android-applikation til integration af Facebook. Jeg har testet alle enheder og det er i gang. Skift kun pakkenavnet på denne kode:


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) {

    }
}

Andre referencer 18


For at generere en hash af frigivelsesnøglen skal du køre følgende kommando på Mac eller Windows, og erstatte dit frigivelsesnøgle alias og stien til din keystore.


På Windows skal du bruge:


keytool -exportcert -alias <RELEASE\_KEY\_ALIAS> -keystore <RELEASE\_KEY\_PATH> | openssl sha1 -binary | openssl base64


Denne kommando skal generere en 28 characher streng. Husk at KOPIER og PASTE denne Release Key Hash i dine Facebook App IDs Android-indstillinger.


billede: fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.2178-6/851568\_627654437290708\_1803108402\_n.png


Se fra: https://developers.facebook.com/docs/android/getting-started#release-key-hash og http://note.taable.com [55] [56]

Andre referencer 19


Som svaret på et lignende problem fandt jeg det her at arbejde for mig:



  • Kopier den apkname.apk fil, du vil kende hash til i mappen Java \ jdk1.7.0\_79 \ bin '

  • Kør denne kommando keytool -list -printcert -jarfile apkname.apk

  • Kopier værdien SHA1 og konverter den ved hjælp af dette websted

  • Brug den konverterede Keyhash-værdi ( ex. zaHqo1xcaPv6CmvlWnJk3SaNRIQ=)


Andre referencer 20


Den enkleste løsning: [58]



  1. Tilføj ikke hash-nøglen, implementer alt andet

  2. Når du trykker på Facebook login, får du en fejl, der siger 'Ugyldig nøgle hash. Nøglehacket' xxx 'stemmer ikke overens med nogen lagret nøgle.'

  3. Åbn facebook app dashboard og tilføj hash 'xxx =' ('xxx' hash fra fejlen + '=' tegn)


Andre referencer 21


Den bedste fremgangsmåde er at bruge følgende kode:


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


Men jeg var så frustrerende med, at der ikke er noget simpelt værktøj til at generere HashKey til Facebook-appen. Hver gang jeg måtte lege med Openssl og Keytool eller at bruge en kode for at få hasen fra underskrift ...


Så jeg skrev en enkel KeyGenTool, der vil gøre det arbejde for dig: -> KeyGenTool på Google Play < - [59]


God fornøjelse :)

Andre referencer 22


Jeg lavede en lille fejl, der skal tages i betragtning. Hvis du bruger dit keystore, så giv dit alias navn, ikke androiddebugkey ...


Jeg løste mit problem. Nu, hvis Facebook er installeret på min enhed, så får min app data på Facebook login integrationen. Bare pas på din hash-nøgle.


Se nedenfor.


C:Program FilesJavajdk1.6.0\_45in>keytool -exportcert -alias here your alias name  -keystore "G:yourkeystorename.keystore" |"G:sslinopenssl" sha1 -binary | "G:sslinopenssl" base64


Tryk derefter på Enter - det vil bede dig om adgangskoden og derefter indtaste dit keystore-kodeord, ikke Android.


Fedt nok.

Andre referencer 23


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;
    @Override
    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() {

            @Override
            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());
                }
            }
        });
    }



}

Andre referencer 24


For det første, for at generere din nøgle hash på din lokale computer, skal du køre Java 's keytool - værktøj (som skal være på din konsols vej) mod Android debug keystore. Dette er som standard i dit hjem. Android-bibliotek).


På ubuntu er det i min computer


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

Andre referencer 25


For folk der ikke ved, hvordan man kode, spiller AivarsDa 's key genværktøj på google jeg den nemmeste løsning. Få bare hash nøglen fra den og kopier til facebook app indstillinger. Andelen på keygen værktøjet gør min app crash på min telefon, så jeg har bare manuelt skrevet det i notesblok og kopieret det til fb. Endelig forbi dette trin efter frustrationstid

Andre referencer 26


Brug denne kommando efter at have åbnet ssl i c-drev og i openssl-mappen.


keytool -exportcert -alias androiddebugkey -keystore "C:UsersAJAY SUNDRIYAL.androiddebug.keystore" | openssl sha1 -binary | openssl base64

Andre referencer 27


Brug dette til printnøgle hash i kotlin


try {
        val info = context.getPackageManager().getPackageInfo(context.packageName,
                PackageManager.GET\_SIGNATURES);
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            Log.d("Key hash ", android.util.Base64.encodeToString(md.digest(), android.util.Base64.DEFAULT))
        }
    }catch (e:Exception){

    }