2012-12-15 299 views
1

我已經瀏覽了developer.facebook.com上的基本hello world facebook應用無數次的教程,以確保我不會犯錯誤,但我得到的錯誤「remote_app_id與存儲的id不匹配」但它確實匹配,並不確定它爲什麼拋出該錯誤。另外當我運行樣本時,我得到一個失敗的聯編程序事務。現在奇怪的是,如果我卸載我的手機上的FB應用程序,並強制用戶登錄Facebook的基本Hello World應用程序的作品。我做錯了什麼或這是一個Facebook的SDK問題。我已經下載並重新安裝了一切,但仍然遇到同樣的問題Facebook sdk 3.0 android

回答

1

已解決。

散列值錯誤。這似乎是一個窗戶問題或人類終結的失敗。 我使用過:

「keytool.exe的位置」-exportcert -alias alias -keystore「keystore的位置」 「openssl.exe的位置」sha1 -binary | 「openssl.exe的位置」ba​​se64

並且得到了錯誤的散列值。不管怎麼說發現這個職位

http://p-xr.com/implementing-facebook-into-your-app-invalid-key-with-keytool/

下載並運行該應用程序keygeneration,得到了哈希值從logcat中的。 這是偉大的調試關鍵,但不確定釋放你的程序的時候了到野外

希望這有助於

+1

如果使用片斷變化Log.i( 「PXR」 唯一的解決辦法,Base64編碼.encodeToString(md.digest(),0)); – user1892172

2

另一個可能的錯誤(這發生在我身上)是:建立一個「密鑰散列」在Facebook的應用程序控制臺並使用其他密鑰庫對Android應用程序進行簽名。

不幸的是,這是因爲Facebook Getting Started Tutorial導致了這個錯誤。它表示,Android開發者應該在你的例子中使用默認的android調試密鑰,並沒有解釋應該使用相同的密鑰庫來生成密鑰哈希,你將簽署你的應用程序。

我recomendation是在你的Facebook控制檯設置了兩個關鍵哈希值:

  1. 默認的Android調試鍵:

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

  1. 您的應用程序發佈重點:

密鑰工具-exportcert -alias yourappreleasekeyalias -keystore〜/。你的/路徑/ release.keystore | openssl sha1 -binary | openssl base64

請記住:您無法發佈使用SDK工具生成的調試密鑰簽名的應用程序。因此,僅僅使用使用第一個先前命令行生成的散列鍵來發布應用程序是不可能的(正如facebook教程所暗示的那樣)

有關簽署應用程序的更多信息,請訪問Signing Your Application

2

嘗試

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