2015-12-28 263 views
0

嗨我很新的Facebook登錄。我試圖爲facebook android應用程序生成散列鍵。第一次它沒有要求輸入密碼並給了我散列鍵,但現在當我再次嘗試生成散列鍵時,它要求通過。當我輸入「android」作爲pass時,它給了我DrNQ。無效的密鑰哈希

命令使用:

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Sam\.android\debug.keystore" | "C:\Openssl\bin\openssl" sha1 -binary | "C:\Openssl\bin\openssl" base64 

here is the screenshot of CMD

回答

1

您使用的是多複雜的手段來得到它有很多機會獲得error.But您的應用程序的哈希鍵我有一個簡單的想法生成您的應用程序哈希鍵。 用於生成散列鍵,您必須指定您的軟件包名稱,並且您在應用程序午餐時正在放入以下代碼,並且您正在獲取日誌中的應用程序散列鍵。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 


    try { 
     PackageInfo info = getPackageManager().getPackageInfo(
       "com.example.chirag.maptesting", 
       PackageManager.GET_SIGNATURES); 
     for (Signature signature : info.signatures) { 
      MessageDigest md = MessageDigest.getInstance("SHA"); 
      md.update(signature.toByteArray()); 
      Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
      Toast.makeText(Main2Activity.this, "Hash Key :"+Base64.encodeToString(md.digest(), Base64.DEFAULT), Toast.LENGTH_SHORT).show(); 
     } 
    } catch (PackageManager.NameNotFoundException e) { 

    } catch (NoSuchAlgorithmException e) { 

    } 
} 

注: 在上面的代碼com.example.chirag.maptesting是我的應用程序包的名字,但你一定要在這裏粘貼您的包名。

我希望你對我的想法很清楚。

祝您好運

+0

非常感謝這肯定顯示了哈希鍵。 –

+0

我可以使用此代碼從其他應用獲取其他軟件包的哈希鍵嗎? –

+0

是的,當然,你只需要替換包名稱並獲得這個特定的包名hash key.but確保你必須在android中開發應用程序,而不是在任何其他平臺上。 –

0

使用下面的代碼片段,您可以得到的哈希碼。

public static String printKeyHash(Activity context) { 
    PackageInfo packageInfo; 
    String key = null; 
    try { 
     //getting application package name, as defined in manifest 
     String packageName = context.getApplicationContext().getPackageName(); 

     //Retriving package info 
     packageInfo = context.getPackageManager().getPackageInfo(packageName, 
       PackageManager.GET_SIGNATURES); 

     Log.e("Package Name=", context.getApplicationContext().getPackageName()); 

     for (Signature signature : packageInfo.signatures) { 
      MessageDigest md = MessageDigest.getInstance("SHA"); 
      md.update(signature.toByteArray()); 
      key = new String(Base64.encode(md.digest(), 0)); 

      // String key = new String(Base64.encodeBytes(md.digest())); 
      Log.e("Key Hash=", key); 
     } 
    } 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()); 
    } 

    return key; 
}