Generating hash key for app using facebook sdk

I am using facebook sdk for login into my application. The application runs fine on HTC devices. The application also works fine on Samsung devices if there is no facebook app pre installed.

But if there is already facebook app on mobile and then the user installs my app, the user is never logged in. From what I know, I think this might be a problem of single sign on, and I think this is somewhat related with generating proper application hash key, and using the hash key in facebook application which I used to log into the mobile app.

Please guide me how to create the hash key. I am running ubuntu 10.4.

When I run this command in terminal :-

keytool -exportcert -alias <your keystore alias name>.keystore -keystore ~/.android/<your keystore name>.keystore | openssl sha1 -binary | openssl base64

I am never prompted for password, though I am given the hash key.


Solution 1:

Try this:

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

I hope you will get it. I just checked it and I got the prompt for password.

Solution 2:

You can use this code block to generate hash key. Put this code block in your onCreate() method.

try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "Your package name", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("Your Tag", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

Solution 3:

If it's not prompting you for password, then first open your terminal and type :

sudo apt install openjdk-8-jre-headless

And then follow the regular way, just type:

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

For password put: android You are all done.

This answer is for debug purpose only, for release purpose use your .jks file to generate hash key.

Solution 4:

Just give the command as:

keytool -exportcert -alias androiddebugkey -keystore debug.keystore

and give the keystroke password or android or enter

Here you have to go to the directory structure until ".android" then run this commnad.In general the path is C:\Users\User-name\.android>.

Solution 5:

Check three parts in your environment.

  1. where is "debug.keystore"?

    find / -name "debug.keystore"

    if you can't find it, check you eclipse or ADT.

  2. what is alias name?

    keytool -list -v -keystore "PATH_TO_DEBUG_KEYSTORE"

  3. Check if installed openssl

    openssl

If everything is ready, it should prompt for password