2015-12-28 202 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; 
}