Facebook SDK and Keyhash

After app on the Facebook developer portal is created, before we can use Facebook API   on behalf of  our created Facebook application, we need to make sure that all settings is correct.

The first one is very easy. The app id should match. 

Get your app id from Facebook Developer portal:


And specify it under the Facebook Editor Setting.

Facebook -> Edit Settings:


Now Under Application Android platform settings we need to specify Google Play Package Name, nad Key Heshes.


The Google Play Package Name this is your app bundle id, which should be specified under the Player Settings inside Unity Editor:



Now the hardest part which triggers lot's of questions. The Key Hashes which you need to specify in the app settings.

So what is the Key Hash. The Key Hash is your app unique signature, we need to specify it to make sure that inly our official application can use Facebook API on n behalf of  our created Facebook application. When you try to make an FB API call, it will be signed with your app  Key Hash by FB SDK. The  Key Hash will be retrieved in runtime from your Application. Since the app  Key Hash is your unique app signature it stores in the key store which you use to sign your app.

So, for example, If I am not signing my APK with specific keystone, which mean I ma going to use default debug key store. The Debug key store is located somewhere on your PC or Mac after you have installed Android SDK, You can read this thread to find out more. To sing your app with the debug Keystore your android build setting should look slike this:

The  Key Hash of this Keystore can be detected by Unity Facebook SDK, and you can actually get it very easy from SDK editor settings. Just go to the Facebook -> Edit Settings:


But you signing your app with your own key store, as shown on screenshot bellow


You can get your app Key Hash using the console

keytool -exportcert -alias <alias_name> -keystore <path_to_keystore> | openssl sha1 -binary | openssl base64


Do not afraid, if that is seems to hard for you. There is one more way.

1) Build your app as is.

2) Open Logcat log

3) Try to make FB API call, and monitor your device log output, and you will see  Key hash FB SKD is trying to use fro API request signature. If you have not specified your correct Key Hash in FB app settings, you will see the picture similar to this:

And device output similar to this:

12-26 12:25:48.862: W/fb4a(:<default>):BlueServiceQueue(3537): Exception during service
12-26 12:25:48.862: W/fb4a(:<default>):BlueServiceQueue(3537): com.facebook.http.protocol.ApiException: [code] 404 [message]: Key hash 4rlCn2qAR6IXFopNf3u3lah0ehs does not match any stored key hashes. [extra]: null


4) Simply add this Key Hash to your FB app settings, and you good to go.