2014-07-24 81 views
2

我在android系統得到了哈希鍵從下面的代碼:在Facebook的應用程序無效的哈希鍵安卓

try { 
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 
PackageManager.GET_SIGNATURES); 
for (Signature signature : packageInfo.signatures) { 
MessageDigest md = MessageDigest.getInstance("SHA"); 
md.update(signature.toByteArray()); 
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
} 
} 
catch (NameNotFoundException e1) { 
Log.e("Name not found", e1.toString()); 
} 
catch (NoSuchAlgorithmException e) { 
Log.e("No such an algorithm", e.toString()); 
} 
catch (Exception e){ 
Log.e("Exception", e.toString()); 
} 

但它是無效鍵...請建議如何驗證Facebook登錄哈希鍵....

回答

0

我認爲問題在於您可能沒有更新Facebook開發者帳戶中的keyhash。請參考:https://developers.facebook.com/docs/android/getting-started

使用生成Keyhash:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64 

,並更新到你的Facebook devloper網站,應用程序選項卡下,一般設置

9

你得到與調試鍵的哈希鍵..如果你沒有在調試模式下簽名包並運行應用程序,這可能會起作用。你需要做的是:

1)轉到清單文件並添加到應用程序android:debuggable =「true」。

2)簽署應用程序,capy並手動安裝到您的設備或從命令行使用「adb install path_to_apk」。

3)現在運行您的應用程序並監視logcat。

4)你會得到一個新的密鑰,這將是與密鑰Facebook應用程序顯示在錯誤味精中的匹配鍵,你得到的鑰匙現在有最後一個=符號。

5)註冊的Facebook開發者網站這一關鍵

備用招數

你可以做一件事只需註冊這是在錯誤味精「關鍵哈希顯示關鍵###不匹配任何存儲的密鑰哈希值「只需在###結尾添加=。它會像### =

你完成了!希望這會起作用。

+3

謝謝...我試圖通過生成簽名的版本我自己的哈希鍵,但沒有奏效。所以我嘗試了替代伎倆..工作:) – AB1209

+0

的伎倆工作! –

0

將其分配給按鈕的單擊並從logcat獲取Key Hash。

Button getKeyHash = (Button) findViewById(R.id.button_key_hash); 
    getKeyHash.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //Key Hash 
      try { 
       PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 
         PackageManager.GET_SIGNATURES); 
       for (Signature signature : packageInfo.signatures) { 
        MessageDigest md = MessageDigest.getInstance("SHA"); 
        md.update(signature.toByteArray()); 
        Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
       } 
      } catch (PackageManager.NameNotFoundException e1) { 
       Log.e("Name not found", e1.toString()); 
      } catch (NoSuchAlgorithmException e) { 
       Log.e("No such an algorithm", e.toString()); 
      } catch (Exception e) { 
       Log.e("Exception", e.toString()); 
      } 
     } 
    }); 

現在去你的應用程序在https://developers.facebook.com/apps 。然後點擊設置,添加你的密鑰哈希並保存。 enter image description here

1

將此函數添加到您的類中,然後在oncreate方法中調用此函數,然後生成sign apk並在設備中運行sign apk並檢查log-cat,將生成的hash key複製到facebook developer console。

private void showHashKey() 
{ 
    // Add code to print out the key hash 
    try { 
     PackageInfo info = getPackageManager().getPackageInfo(
       "com.kisan.kisan", 
       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 (PackageManager.NameNotFoundException e) { 

    } catch (NoSuchAlgorithmException e) { 

    } 

} 

檢查Facebook驗證,它會正常工作