com.facebook.http.protocol.ApiException: Key hash does not match any stored key hashes.
I’m not alone in the type of developer who things he understands how something works without reading instructions, and this is certainly a lesson in reading instructions before banging you head off a wall trying to fix a problem that was solved by reading the next paragraph.
But, the diagnostic technique may help someone else.
I was trying to get the Android Facebook SDK to get up and running, with a view to then move onto the Phonegap Facebook Plugin. But quite naturally, I knew that I would have to get the base level Facebook SDK examples to work before moving on to the Phonegap plugin.
So, I installed the Facebook Android SDK, imported the projects into my workspace, and tried to run the first one, Friend Picker, and lo and behold. Nothing. Nada. No worky. Just a prompt asking me permission, then nothing else.
I tried then connecting a real android device. Same result. #
I checked in LogCat, and scrolled up to the first mention of a Facebook related error and got this:
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): com.facebook.http.protocol.ApiException: Key hash bBZxOcCkWDdGSW8zex5GXuvuwpY does not match any stored key hashes.
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.java:83)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.http.protocol.ApiResponseChecker.a(ApiResponseChecker.java:162)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.http.protocol.ApiResponse.g(ApiResponse.java:151)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.platform.auth.server.AuthorizeAppMethod.a(AuthorizeAppMethod.java:275)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.platform.auth.server.AuthorizeAppMethod.a(AuthorizeAppMethod.java:31)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.http.protocol.ApiResponseHandler.a(ApiResponseHandler.java:55)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.http.protocol.ApiResponseHandler.handleResponse(ApiResponseHandler.java:28)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:314)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:144)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.http.common.FbHttpRequestProcessor.b(FbHttpRequestProcessor.java:100)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.java:230)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:402)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:164)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.http.protocol.AbstractSingleMethodRunner.a(AbstractSingleMethodRunner.java:18)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.platform.common.server.SimplePlatformOperation.a(SimplePlatformOperation.java:40)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.platform.common.server.PlatformOperationHandler.a(PlatformOperationHandler.java:60)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.fbservice.service.BlueServiceQueue.e(BlueServiceQueue.java:329)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.fbservice.service.BlueServiceQueue.d(BlueServiceQueue.java:55)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.fbservice.service.BlueServiceQueue$3.run(BlueServiceQueue.java:258)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at com.facebook.common.executors.ListenableScheduledFutureImpl.run(ListenableScheduledFutureImpl.java:59)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at android.os.Handler.handleCallback(Handler.java:733)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at android.os.Handler.dispatchMessage(Handler.java:95)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at android.os.Looper.loop(Looper.java:136)
04-08 04:50:01.757: W/fb4a(:<default>):BlueServiceQueue(1711): at android.os.HandlerThread.run(HandlerThread.java:61)
04-08 04:50:01.797: D/dalvikvm(2292): GC_FOR_ALLOC freed 467K, 15% free 3196K/3736K, paused 360ms, total 366ms
04-08 04:50:01.997: W/CursorWrapperInner(2292): Cursor finalized without prior close()
04-08 04:50:02.107: I/Choreographer(382): Skipped 31 frames! The application may be doing too much work on its main thread.
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): Failed to send
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): com.facebook.fbservice.service.ServiceException: API_ERROR: API_ERROR
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): at com.facebook.fbservice.ops.BlueServiceOperation.c(BlueServiceOperation.java:639)
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): at com.facebook.fbservice.ops.BlueServiceOperation.c(BlueServiceOperation.java:47)
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): at com.facebook.fbservice.ops.BlueServiceOperation$2.run(BlueServiceOperation.java:604)
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): at android.os.Handler.handleCallback(Handler.java:733)
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): at android.os.Handler.dispatchMessage(Handler.java:95)
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): at android.os.Looper.loop(Looper.java:136)
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): at java.lang.reflect.Method.invokeNative(Native Method)
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): at java.lang.reflect.Method.invoke(Method.java:515)
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-08 04:50:02.137: W/fb4a(:<default>):GDPDialog(1711): at dalvik.system.NativeStart.main(Native Method)
Finding the first reference (highlighted in bold) was
com.facebook.http.protocol.ApiException: Key hash does not match any stored key hashes.
So, I searched for that online, and realised I hadn’t read all the instructions, you have to enter in the hash provided (base64 padded) to https://developers.facebook.com/settings/developer/sample-app/
– Which is generated from DOS, like this:
C:\OpenSSL-Win32\bin>keytool -exportcert -alias androiddebugkey -keystore %HOMEP
ATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
Enter keystore password: android
bBZxOcCkWDdGSW8zex5GXuvuwpY=
Obviously, this means that I’ll have to re-do this step whenever I’m using my signing key. Hopefully that’s not going to be a problem…
failed to log in.
LikeLike
failed to login to my facebook.
LikeLike