簡體   English   中英

Android Facebook SDK的keytool

[英]keytool with Android Facebook SDK

我只想要一些確認。

我正在開發Windows

我正在嘗試將facebook集成到應用程序中,SDK文檔說我需要'導出簽名'

從這里: http//developers.facebook.com/docs/guides/mobile/#android

所以它說運行這個命令:

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

首先我必須下載openssl: OpenSSL

現在上面的命令,我假設應該轉換為:

"C:\path\to\java\keytool" -exportcert -alias your_alias -keystore "C:\path\to\your\keystore\keystore.name" | "C:\path\to\openssl_install\bin\openssl" sha1 -binary |"C:\path\to\openssl_install\bin\openssl" base64
  • 那么您想要安裝在最新Java安裝文件夾中的keytool嗎?
  • 您希望別名是您在eclipse中用於正常apk創建的別名的名稱嗎?
  • 您希望密鑰庫是導出Android應用程序時使用的密鑰庫嗎?
  • 您希望openssl成為您剛剛安裝的那個

所以一旦我完成了它,它會要求輸入密碼:(它顯示密碼,因為我正在輸入密碼)

如果我輸入正確的密碼,我會得到

'zR2tey1h9kqPRSW / yEYEr0ruswyD ='(公開更改)

但如果我輸入的密碼不正確,它仍然會以一種形式返回給我一個代碼

'ga0RGNYHvTR5d3SVDEfpQQAPGJ1 ='?

所以,是的,只是在尋找確認我正在做正確的事情,這是預期的輸出

獲取哈希的最佳方法是運行以下代碼:

try {
            PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md;

                    md = MessageDigest.getInstance("SHA");
                    md.update(signature.toByteArray());
                    String something = new String(Base64.encode(md.digest(), 0));
                    Log.e("hash key", something);
        } 
        }
        catch (NameNotFoundException e1) {
            // TODO Auto-generated catch block
            Log.e("name not found", e1.toString());
        }

             catch (NoSuchAlgorithmException e) {
                // TODO Auto-generated catch block
                 Log.e("no such an algorithm", e.toString());
            }
             catch (Exception e){
                 Log.e("exception", e.toString());
             }

當使用windows cmd,git bash或cygwing終端提取哈希時,這三個工具會給出不同的結果。

最准確的是上面的代碼

是的,你是以正確的方式做我認為。我也執行此命令,並將此哈希放在我的fb應用程序中,它的工作正常。

回答你的問題如下:

所以一旦我完成了它,它會要求輸入密碼:(它顯示密碼,因為我正在輸入密碼)

如果我輸入正確的密碼,我會得到

'zR2tey1h9kqPRSW / yEYEr0ruswyD ='(已公開更改)但是如果我輸入的密碼不正確,它仍然會返回一個代碼形式的代碼

'ga0RGNYHvTR5d3SVDEfpQQAPGJ1 ='? 所以,是的,只是在尋找確認我正在做正確的事情,這是預期的輸出

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64 keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64有三個命令將前一個命令的輸出提供給下面的命令。

  1. keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore
  2. openssl sha1 -binary
  3. openssl base64

當給出不正確的密鑰庫密碼時,第一個命令會生成錯誤,但不會顯示錯誤,因為會輸入第二個命令並生成不同的哈希值。 只運行第一個keytool命令( keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore )以確認您的密鑰庫密碼以及它是否正確。 如果密碼不正確,將顯示類似於下面的輸出。

> keytool -exportcert -alias androiddebugkey -keystore 

〜/ .android / debug.keystore輸入密鑰庫密碼:
keytool錯誤:java.io.IOException:Keystore被篡改,或密碼不正確

提供android來回答Enter keystore password:如果生成android debug hash則提示。 android debug keystore的默認密碼是android

命令也可以編寫以捕獲來自keytool命令的錯誤,以查看在運行命令2之前命令1是否返回錯誤。

那么您想要安裝在最新Java安裝文件夾中的keytool嗎?

您希望別名是您在eclipse中用於正常apk創建的別名的名稱嗎?

您希望密鑰庫是導出Android應用程序時使用的密鑰庫嗎?

你想openssl成為你剛剛安裝的那個嗎?

對以上所有問題都是肯定的。 PATH可以設置為不鍵入keytool和openssl的完整路徑。

暫無
暫無

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

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