The error occurs because of invalid hash key.
We can create Hash key using the below command and update the same here under Settings-> Basic -> Android HashKeys
keytool -exportcert -alias ADD_RELEASE_KEY_ALIASE_HERE -keystore ADD_UR_KEYSTORE_PATH_HERE | openssl sha1 -binary | openssl base64
You can find the Relase Key Alias of your keystore using the below command if needed:
keytool -list -keystore ADD_UR_KEYSTORE_PATH_HERE
I have also experience an issue like by using the above HashKey the login works fine if I install the release APK directly to the device, But when I upload the APK to Play Store and install app from store then it shows the same Login failed error. The fix for this is as follows:
Go to Release Management here
Select Release Management
-> App Signing
You can see SHA1 key in hex format App signing certificate.
Copy the SHA1 in hex format and convert it in to base64 format, you can use this link do that without the SHA1: part of the hex.
Go to Facebook developer console and add the key(after convert to base 64) in the settings —> basic –> key hashes.
Just throwing this out there for people still experiencing this issue. The hash I created through the keytool was somehow incorrect. I fixed it by doing the following:
If you already uploaded your app to the playstore and enabled "app signing by Google Play" there is a solution (at least this worked for me):
login into you play console
click on the app
now on the left side click "release management"
click "App signing"
under "App signing certificate" copy the SHA-1 certificate fingerprint
go to http://tomeko.net/online_tools/hex_to_base64.php
paste the SHA-1 in the first field
copy the text in input field under "Output (base64)"
now open developer.facebook.com/apps
click your app
on the left side navigate to "Settings" -> "Basic"
past the Base64 text here under key hashes
The steps above should still fully work.
But if you do not want to paste your key on that website, here is an alternative to step 6,7,8 below:
here's a oneliner Node.js command to do the same:
node -e 'console.log(Buffer.from(process.argv.split(":").map(hex => parseInt(hex, 16))).toString("base64"))' '5E:8F:16:06:2E:A3:CD:2C:4A:0D:54:78:76:BA:A6:F3:8C:AB:F6:25'