2012-04-06 151 views
6

在Facebook的Android的教程中,我們被告知要使用下面的代碼來創建密鑰散列:如何創建Facebook密鑰哈希?

密鑰工具-exportcert -alias androiddebugkey -keystore〜/ .android/debug.keystore | openssl sha1 -binary | openssl base64

這是在所有情況下使用的確切代碼嗎?例如,而不是~/.android/debug.keystore應該像C:/folderone/foldertwo/.android/debug.keystore

正如你所看到的,我不確定是否需要引號括起來,是否需要完整的路徑!

有人能夠提供真實世界的例子嗎?


https://developers.facebook.com/docs/mobile/android/build/#sso

+0

你需要有來自谷歌的OpenSSL ...遵循[鏈接]給出的步驟[1] [1]:http://stackoverflow.com/questions/4388992/key-hash- for-android-facebook-app/6665263#6665263 – 2012-04-06 10:12:56

+0

你可以在這裏看到真實的例子http://stackoverflow.com/questions/9977492/android-facebook-sdk-keystore-not-asking-or-password/10026147#10026147 – dimetil 2012-04-06 10:40:40

+0

您應該找到答案由Avi [here。](http://stackoverflow.com/a/6665263/5861880) – abosamy 2017-03-02 15:03:24

回答

2

在Eclipse中,窗口 - >喜好 - >Android的 - >構建 - >默認的調試密鑰庫,複製路徑替換~/.android/debug.keystore

11

你可以這樣創建

keytool -exportcert -alias androiddebugkey -keystore c:\Users\<your windows default user>\.android\debug.keystore | openssl sha1 -binary | openssl base64 

輸入密鑰庫密碼:安卓

+0

鏈接已死 – larham1 2013-05-03 16:52:27

+0

此處稍作更改。首先,如果您的openssl.exe不在PATH中,您將無法以此方式調用它(keytool也是如此)。其次,最後一部分是「openssl base64」。 – Asim 2013-09-17 04:56:03

+0

MacOS:keytool -exportcert -alias androiddebugkey -keystore〜/ .android/debug.keystore | openssl sha1 -binary | openssl base64 密碼:android – 2016-11-08 23:17:48

1

我有同樣的問題,我花了幾個小時找到一個解決方案,但實際上Facebook的SDK本身提供瞭解決方案。

在DialogListener類

我修改onFacebookError方法:

@Override 
public void onFacebookError(FacebookError error) { 
    Log.d("myTag",error.getmessage); 
} 

執行應用程序(其是符號用相同的密鑰i使用的市場),以及上的logcat將這個標記與下一個消息正確的鑰匙。

我們還創建了一個簡單的項目,完成所有工作,並在警告框和LogCat上返回正確的密鑰。你可以在our blog找到它。

16

嘗試

try { 
PackageInfo info = getPackageManager().getPackageInfo("com.eatapp", PackageManager.GET_SIGNATURES); 
for (Signature signature : info.signatures) { 
    MessageDigest md = MessageDigest.getInstance("SHA"); 
    md.update(signature.toByteArray()); 
    Log.e("MY KEY HASH:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
} 
} catch (NameNotFoundException e) { 

} catch (NoSuchAlgorithmException e) { 

} 

在主要活動:-)這是我的作品爲Android SDK 3.0

+1

包含必需:import android.content.pm.PackageInfo;導入android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException;導入android.content.pm.Signature;導入android.util.Base64;導入android.util.Log; – Alireza 2016-05-02 23:31:04

1

密鑰工具-exportcert -alias androiddebugkey -keystore 「debug.keystore路徑」 唯一的解決辦法| openssl sha1 -binary | OpenSSL的BASE64

如果你還沒有設置環境變量打開SSL和Java SDK的不是把JDK的到位密鑰工具和bin文件夾路徑的OpenSSL的路徑到位的OpenSSL,不要忘記把雙引號爲您的路徑

ex - 「C:\ Program Files \ Java \ jdk1.5.0_11 \ bin」-exportcert -alias androiddebugkey -keystore「C:\ Users \ amin.android \ debug.keystore」| 「F:\ openssl \ binsha1 \ openssl.exe」-binary | 「F:\ OpenSSL的\ binsha1 \ OpenSSL的。EXE」的base64

3
/** 
    * Generates the hash key used for Facebook console to register app. It can also be used for other sdks) Method copied from: https://developers.facebook.com/docs/android/getting-started/ 
    */ 
    public static String printHashKey(Context ctx) { 
     // Add code to print out the key hash 
     try { 
      PackageInfo info = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), PackageManager.GET_SIGNATURES); 
      for (Signature signature : info.signatures) { 
       MessageDigest md = MessageDigest.getInstance("SHA"); 
       md.update(signature.toByteArray()); 
       return Base64.encodeToString(md.digest(), Base64.DEFAULT); 
      } 
     } catch (NameNotFoundException e) { 
      return "SHA-1 generation: the key count not be generated: NameNotFoundException thrown"; 
     } catch (NoSuchAlgorithmException e) { 
      return "SHA-1 generation: the key count not be generated: NoSuchAlgorithmException thrown"; 
     } 

     return "SHA-1 generation: epic failed"; 
    } 
1

一個蠻力選擇是先走一步,嘗試從您的應用程序共享的東西。我的應用程序,然後會顯示一個Facebook頁面,它試圖匹配的關鍵。然後,你可以複製此鍵,把它放在你的Facebook的「設置」頁面上的開發者的Facebook帳戶。

不理想,但在緊要關頭,它可能會有所幫助。

2

具有日誌中的錯誤時,嘗試登錄時Facebook,尋找如下的東西:

Invalid key hash. The key hash *** does not match any stored key hashes. Configure your app key hashes at http://developers.facebook.com/apps/565561836797777 

其中「***」是您需要使用的關鍵。

相關問題