2011-02-16 29 views
3

我想實現的Facebook到我的應用程序,使之類的東西送東西到用戶的牆壁,更新狀態,獲得哈希鍵等Android的 - 對於Facebook集成

所以下載的東西后,有人告訴我,使用密鑰庫文件獲取密鑰。我決定勇敢並創建我自己的密鑰存儲文件(以後用於發佈內容)併成功完成。

創造雖然我有各種各樣的嘗試retreieve從它的一個關鍵問題的文件後,我通過密鑰工具/命令提示符下輸入的命令,並問我的密鑰庫密碼...

進入後我首先設置的密碼,除了奇怪的符號和字母外,我還沒有收到什麼,而且它的中間還有我的密鑰庫細節。什麼問題?

更新: 好的,我知道你可能需要使用OpenSSL來正確顯示文本。我已經安裝了OpenSSL,但是如何使用它來獲取哈希代碼?

+0

另外,我有安裝它給了我的應用程序ID和祕密FB上的一個開發頁面,我還需要做這個keytool的東西嗎? – Jamie

回答

3

我總是用這種方法在Linux下,因爲它沒有在原始的方式:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore > key.out 
cat key.out | openssl sha1 -binary > key.bin 
cat key.bin | openssl base64 

你會得到你需要在頁面上移動,你的Facebook,技術成果的android部分輸入鍵。每當您使用不同的keytore簽署您的應用程序時,您也需要更改Facebook頁面上的密鑰。

+0

謝謝,這是一個很大的節省時間。 –

4
  1. 下載Openssl的距離:http://code.google.com/p/openssl-for-windows/downloads/list

  2. 請在C盤一個OpenSSL的文件夾

  3. 解壓縮zip文件到OpenSSL的文件夾

  4. 檢查密鑰工具可執行文件在目錄上你的路徑。 (例如,我的Windows 7機器上,這是在C:\ Program Files文件(x86)的\的Java \ JRE6 \ BIN)
  5. 打開cmd並粘貼:

    密鑰工具-exportcert -alias androiddebugkey -keystore〜 /.android/debug.keystore | C:\ openssl \ bin \ openssl sha1 -binary | C:如果需要 \ OpenSSL的\ BIN \ OpenSSL的的base64

型密碼的android你收到你的散列碼

+0

歡迎來到SO。您的答案與此前一年前發佈的問題的答案几乎完全相同。如果您添加了一條缺少的信息,請考慮在現有答案上發佈評論,而不是創建新評論。 – acj

0

最好的方法。

*嘗試{ PackageInfo信息= getPackageManager()getPackageInfo( 「你的包名」, PackageManager.GET_SIGNATURES)。 (簽名簽名:info.signatures){ MessageDigest md = MessageDigest.getInstance(「SHA」); md.update(signature.toByteArray()); Log.d(「Your Tag」,Base64.encodeToString(md.digest(),Base64.DEFAULT)); } }趕上(ē的NameNotFoundException){}趕上(拋出:NoSuchAlgorithmException五){} *

有些時候在OpenSSL提供了錯誤的keyhash。

0

您可以使用下面的代碼來獲得哈希鍵:

try { 

    PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 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) { 
    Log.e("name not found", e.toString()); 
    } catch (NoSuchAlgorithmException e) { 
    Log.e("no such an algorithm", e.toString()); 
    } 

參考:

http://limbaniandroid.blogspot.com/2013/04/how-to-get-hash-key-for-integarte.html