Facebook Android Generate Key Hash

后端 未结 21 2062
误落风尘
误落风尘 2020-11-22 04:11

Trying to create an android app with Facebook integration, I\'ve gotten to the part in the docs where you have to generate a key hash file, it specifies to run the following

相关标签:
21条回答
  • 2020-11-22 04:49

    Delete your debug certificate under ~/.android/debug.keystore (on Linux and Mac OS X); the directory is something like %USERHOME%/.android on Windows.

    The Eclipse plugin should then generate a new certificate when you next try to build a debug package.

    Let me know if that works.

    0 讨论(0)
  • 2020-11-22 04:50

    UPDATED ANSWER (Generating through code) Simpler method :

    In my experience, openssl always being troublesome, I tried the second method suggested by facebook. And it's wonderful. This is the best method to get the hash key.

    Second option is to print out the key hash sent to Facebook and use that value. Make the following changes to the onCreate() method in your main activity:

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            try {
                PackageInfo info = getPackageManager().getPackageInfo(
                        "com.facebook.samples.loginhowto", 
                        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) {
    
            }
            ...other operations
    
    }//end of onCreate
    

    Replace com.facebook.samples.loginhowto with your own package name ( package name in Manifest.xml).

    Official link - https://developers.facebook.com/docs/android/login-with-facebook/ ( See the bottom of the page)

    OLD ANSWER (Generating Keyhash using openssl )

    1. to generate signature you need openssl installed on your pc. If you don’t have one download openssl from here
    2. In C: , Create openssl folder
    3. extract the contents of downloaded openssl zip file into openssl folder in C:drive
    4. open Command prompt
    5. move to bin of openssl i.e C:\openssl\bin in command prompt
    6. run the following command to generate your keyhash. While generating hashkey it should ask you password.

      keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Anhsirk.android\debug.keystore" | openssl sha1 -binary | openssl base64

    NOTE: in the above code note that , you need to give your path to user ( i.e in my case it is C:\Users\Anhsirk , you just need to change this for your user account.

    Give password as android

    . If it don’t ask for password your keystore path is incorrect.

    If everything works fine, it should give you the hashkey below.

    enter image description here

    0 讨论(0)
  • 2020-11-22 04:50

    Generate Debug hash key

      public String hashkey(Context context) {
            String keyhash = "";
            try {
                PackageInfo info = context.getPackageManager().getPackageInfo(context.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));
                    keyhash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
                }
            } catch (PackageManager.NameNotFoundException e) {
    
            } catch (NoSuchAlgorithmException e) {
    
            }
            return keyhash;
        }
    

    Generate Release hash key

     keytool -exportcert -alias specialbridge -keystore /home/shilpi/newproject/specialBridge/SpecialBridgeAndroid/keystore/specialbridge.jks | openssl sha1 -binary | openssl base64
    
    0 讨论(0)
  • 2020-11-22 04:52

    The right key can be obtained from the app itself by adding the following code to toast the proper key hash (in case of Facebook SDK 3.0 onwards, this works)

    try {
                PackageInfo info = getPackageManager().getPackageInfo("com.package.mypackage",         PackageManager.GET_SIGNATURES);
                for (Signature signature : info.signatures) {
                    MessageDigest md = MessageDigest.getInstance("SHA");
                    md.update(signature.toByteArray());
                    String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
                    Log.e("MY KEY HASH:", sign);
                    Toast.makeText(getApplicationContext(),sign,         Toast.LENGTH_LONG).show();
                }
    } catch (NameNotFoundException e) {
    } catch (NoSuchAlgorithmException e) {
    }
    

    Replace com.package.mypackage with your package name

    0 讨论(0)
  • 2020-11-22 04:53

    If you are releasing, use the keystore you used to export your app with and not the debug.keystore.

    0 讨论(0)
  • 2020-11-22 04:57

    In order to generate key hash you need to follow some easy steps.

    1) Download Openssl from: here.

    2) Make a openssl folder in C drive

    3) Extract Zip files into this openssl folder created in C Drive.

    4) Copy the File debug.keystore from .android folder in my case (C:\Users\SYSTEM.android) and paste into JDK bin Folder in my case (C:\Program Files\Java\jdk1.6.0_05\bin)

    5) Open command prompt and give the path of JDK Bin folder in my case (C:\Program Files\Java\jdk1.6.0_05\bin).

    6) Copy the following code and hit enter

    keytool -exportcert -alias androiddebugkey -keystore debug.keystore > c:\openssl\bin\debug.txt

    7) Now you need to enter password, Password = android.

    8) If you see in openssl Bin folder, you will get a file with the name of debug.txt

    9) Now either you can restart command prompt or work with existing command prompt

    10) get back to C drive and give the path of openssl Bin folder

    11) copy the following code and paste

    openssl sha1 -binary debug.txt > debug_sha.txt

    12) you will get debug_sha.txt in openssl bin folder

    13) Again copy following code and paste

    openssl base64 -in debug_sha.txt > debug_base64.txt

    14) you will get debug_base64.txt in openssl bin folder

    15) open debug_base64.txt file Here is your Key hash.

    0 讨论(0)
提交回复
热议问题