簡體   English   中英

Facebook SDK 3.0 Android

[英]Facebook sdk 3.0 android

我已經遍歷了developer.facebook.com上針對Android的基本hello world facebook應用程序的教程,以確保我沒有犯錯,但是我得到了錯誤“ remote_app_id與存儲的ID不匹配”,但確實匹配並且不確定為什么會拋出該錯誤。 另外,當我運行樣本時,我得到了失敗的活頁夾交易。 現在奇怪的是,如果我在手機上卸載了fb應用程序並強迫用戶登錄Facebook,則基本的hello world應用程序有效。 我是在做錯什么還是這是Facebook SDK問題。 我已經下載並重新安裝了所有內容,但仍然遇到相同的問題

另一個可能的錯誤(發生在我身上)是:在Facebook App Console上設置“密鑰哈希”,並使用另一個密鑰庫對android應用進行簽名。

不幸的是,這是由於Facebook入門教程引發了此錯誤。 它表示android開發人員應在示例中使用默認的android調試密鑰,而不是說明應使用與應用程序簽名相同的密鑰庫生成密鑰哈希。

我的建議是在您的Facebook控制台上設置兩個密鑰哈希:

  1. 默認的Android調試鍵:

keytool -exportcert -alias androiddebugkey -keystore〜/ .android / debug.keystore | openssl sha1 -binary | openssl base64

  1. 您的應用程序發布密鑰:

keytool -exportcert -alias yourappreleasekeyalias -keystore〜/。您的/path/release.keystore | openssl sha1 -binary | openssl base64

請記住:您不能發布使用SDK工具生成的調試密鑰簽名的應用程序。 因此,不可能僅使用通過第一個先前的命令行生成的哈希鍵來發布應用程序(如facebook教程所建議的那樣)。

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

嘗試

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的解決方案

解決了。

哈希值錯誤。 這似乎是Windows問題或人為失敗。 我用了:

“ keytool.exe的位置” -exportcert-別名別名-keystore“ keystore的位置” | “ openssl.exe的位置” sha1 -binary | “ openssl.exe的位置” base64

並得到錯誤的哈希值。 無論如何發現了這個帖子

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

下載並運行密鑰生成應用程序,並從logcat中獲取哈希值。 這對於調試鍵非常有用,但是不確定何時將程序發布到野外

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM