2014-02-06 105 views
1

我想使用Facebook按鈕添加登錄到我的應用程序。所以我試着按照這個指南。使用Facebook憑證登錄我的應用程序

Getting Started with the Facebook SDK for Android

我試圖讓Android的密鑰散列。但我無法在我的PC cmd上運行它。

這是我試過的代碼。

我添加了我的家路徑%HOMEPATH%

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

但它顯示像這樣的錯誤。

enter image description here

誰能幫我解決這個錯誤。

+0

1)CD C:\ Program Files文件\的Java \ jdk1。 6.0 \ bin> 2)keytool -exportcert -alias androiddebugkey -keystore HOMEPATH \ .android \ debug.keystore | openssl sha1 -binary | openssl enc -a -e –

+0

我得到了同樣的問題,你需要下載openssl,查看這個[視頻](https://www.youtube.com/watch?v=LUv8NDgu2Xk)它很容易幫我出來 – Coderji

回答

2

首先從這個a link

其次它解壓到本地磁盤C下載OpenSSL:已命名openssl可以即文件夾名

第三將其設置在環境變量中。步驟如下

右擊我的電腦 - >屬性 - >高級 - >環境變量 下系統變量 - >點擊路徑,然後單擊編輯

現在,插入一個「;」分號並粘貼文件夾openssl的路徑。然後好的。

現在你可以看到openssl被公認爲cmd中的命令。

得到KeyHash執行follwing的警告CMD

keytool -exportcert -alias androiddebugkey -keystore "path of ur debug.keystore" | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64 

解決方案---

WARNING: can't open config file: C:/OpenSSL/openssl.cnf 
WARNING: can't open config file: C:/OpenSSL/openssl.cnf 
openssl:Error: 'base' is an invalid command. 

1日在類似於第三步的環境變量添加以下行。

設置OPENSSL_CONF=c:\openssl\bin\openssl.cfg

現在運行CMD以上

keytool -exportcert -alias androiddebugkey -keystore "path of ur debug.keystore" | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64 

ü做得到警告,但keyHash在CMD返回...

+0

謝謝親愛的。我拿了KeyHash,但是我不能在我的Fb賬戶上發佈任何帖子。 – anuruddhika

+0

看看這個[鏈接](http://www.integratingstuff.com/2010/10/14/integrating-facebook-into-an-android-application/)它可能會幫助你 – kevz

+0

親愛的,但它是這樣說的警告。警告:無法打開配置文件:C:/OpenSSL/openssl.cnf 警告:無法打開配置文件:C:/OpenSSL/openssl.cnf我認爲我的密鑰不正確 – anuruddhika

0

使用下面的代碼來打印散列鍵在日誌

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     PrintHashKeyInLog(); 

    } 

    public void PrintHashKeyInLog() { 

     PackageInfo info; 
     try { 
      info = getPackageManager().getPackageInfo(
        "Your package name", 
        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)); // String 
       something = new String(Base64.encode(md.digest(), 0)); 
       Log.e("hash key", something); 
      } 
     } 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()); 
     } 
    } 
+0

你的意思是什麼通過「你的AppId在這裏」 – anuruddhika

+0

@anuruddhika你可以忽略這一點。查看我更新的答案 – Kunu

相關問題