2011-10-10 152 views
4

我收到login failed invalid key error同時使用Facebook的更新版本。如果我刪除它 - 它工作正常..Android單點登錄

什麼是創建一個哈希鍵的正確方法

我知道在Android上單點登錄有很多問題和答案,但沒有人幫助我在Android中實現單點登錄。

我的代碼:

public class Main extends Activity { 
    Facebook facebook = new Facebook("XXXXXXXXXX"); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     facebook.authorize(this, new DialogListener() { 
      @Override 
      public void onComplete(Bundle values) {} 

      @Override 
      public void onFacebookError(FacebookError error) {} 

      @Override 
      public void onError(DialogError e) {} 

      @Override 
      public void onCancel() {} 
     }); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     facebook.authorizeCallback(requestCode, resultCode, data); 
    } 
} 

然後我使用命令

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

此外,我具有OpenSSL和給定的OpenSSL高達openssl.exe位置所生成的散列密鑰..

我點擊輸入它要求輸入密碼,我給出了作爲密碼的android。然後我得到一個密鑰並填寫「我的申請」。

回答

6

創建一個哈希鍵

請按照下列步驟的正確方法。

步驟如下:從Google Code

    1. 下載OpenSSL的解壓縮。在C:/中創建一個文件夾 - OpenSSL並在此處複製提取的代碼。

    2. 檢測到debug.keystore文件路徑。如果找不到它,請在C:/中進行搜索,然後在下一步中使用命令中的路徑。

    3. 檢測到您的keytool.exe路徑,並轉到DIR /在命令提示符,運行此命令(在一行中):

      $ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64

    4. 它會要求輸入密碼。把「android」,就是這樣。你會得到一個密鑰哈希。

  • -1

    嗯,這可能不是一個答案,我想你檢查Android, the Facebook SDK, SSO, and You

    您是否使用Windows XP生成散列?也許存在這個問題。

    +0

    是啊我試過這個鏈接沒有用..我使用Windows 7. – Venky

    +0

    我有同樣的問題,但它工作從我 –

    +0

    它不適合我.. – Venky

    6

    首先,你需要創建根據您的路徑中使用下面的代碼的哈希鍵。

    C:\Documents and Settings\Logistic103>keytool -export -alias androiddebugkey -keystore "C:\Documents and Settings\Logistic103\.android\debug.keystore" | E:\Downloads\openssl-0.9.8k_WIN32\bin\openssl.exe sha1 -binary | E:\Downloads\openssl-0.9.8k_WIN32\bin\openssl.exe enc -a -e 
    

    ,輸入密碼:

    Enter keystore password: android 
    

    然後到Facebook的開發者和登錄到Facebook上。登錄後轉到您的應用程序,然後點擊編輯setttings鏈接:

    Enter image description here

    然後加入生成的密鑰作爲下您的應用程序,

    Enter image description here

    這就是你如何做到這一點;)

    以上步驟適用於我。

    +0

    @Venky嗨,我有同樣的問題之前, 5個月,我終於通過上述步驟解決了它,但我記得我已經更改了一些在Facebook API中的代碼,但我現在不記得它,我會盡快恢復 –

    0

    更好地利用這段代碼

    try { 
         PackageInfo info = getPackageManager().getPackageInfo("your.package", 
           PackageManager.GET_SIGNATURES); 
         for (Signature signature : info.signatures) { 
          MessageDigest md = MessageDigest.getInstance("SHA"); 
          md.update(signature.toByteArray()); 
          Log.d("YOURHASH KEY:", 
            Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
         } 
        } catch (NameNotFoundException e) { 
    
        } catch (NoSuchAlgorithmException e) { 
    
        } 
    
    0

    請點擊此鏈接Generate correct Hash Key

    您可以有問題生成散列密鑰簽名和未簽名的應用程序。並從你的Logcat複製這個密鑰。