2013-10-21 84 views
1

我有生成密鑰哈希的問題。 我使2鍵:Facebook發佈key_hash

C:\openssl\bin>"C:\Program Files\Java\jre7\bin\keytool.exe" -exportcert -alias forumurology -keystore uroweb7228.keystore | openssl sha1 -binary | openssl base64 
Enter keystore password: ******* 
c/6e5fY8Rg3Gshn1TKucia***/A= 

C:\openssl\bin>"C:\Program Files\Java\jre7\bin\keytool.exe" -exportcert -alias a 
ndroiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64 
Enter keystore password: android 
3L0oeMh7uk9YWE0sYavUuT***yU= 

然後將其保存到我的Facebook應用程序設置。 當我運行釋放的apk,我有錯誤:

10-21 16:48:11.583: W/fb4a(:<default>):BlueServiceQueue(20097): Exception during service 
10-21 16:48:11.583: W/fb4a(:<default>):BlueServiceQueue(20097): com.facebook.http.protocol.ApiException: Key hash ypC1--aybTSQXdzXGLtM-_nXydI does not match any stored key hashes. 
10-21 16:48:11.583: W/fb4a(:<default>):BlueServiceQueue(20097):  at com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.java:83) 
+0

爲什麼不從錯誤中使用密鑰散列? –

回答

3

這是因爲該設備是創建一個新的密鑰散列這是不是在你的應用程序設置。所以你必須相應地更新keyhash ..使用onCreate()

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("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
       } 
     } catch (NameNotFoundException e) { 

     } catch (NoSuchAlgorithmException e) { 

     }