密钥哈希无效

时间:2015-12-28 07:39:05

标签: android facebook

嗨,我对facebook登录很新。我试图为facebook android app生成一个哈希键。第一次它没有要求输入密码并给我哈希密钥,但现在当我再次尝试生成哈希密钥时,它要求通过。当我输入“android”作为传递时,它只给我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

2 个答案:

答案 0 :(得分:1)

你正在使用非常复杂的技巧来获取你的应用程序的哈希键,它有很多机会得到错误。但我有一个简单的想法来生成你的应用程序哈希键。 要生成散列密钥,您必须指定您的软件包名称,而您只是在应用程序是午餐时添加以下代码,并且您在日志中获得了应用程序哈希密钥。

 @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是我的应用程序包名称,但您必须在此处粘贴您的包名称。

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

祝你好运

答案 1 :(得分: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;
}