错误:使用facebook成功登录后无效的哈希密钥

时间:2018-01-30 19:08:59

标签: android facebook facebook-login react-native-android

我正在尝试使用我的应用中的Facebook登录并想要个人资料数据。为此,我想以编程方式生成密钥,但它给了我错误。 我完成了here给出的所有其他事情但是所有这些事情对我来说都不起作用,而我想要生成密钥的代码却给了我错误。

我可以先成功登录(由keytool命令生成的密钥),但之后显示无效的哈希密钥错误。

请帮助我如何摆脱这个。

我在MainApplication.java粘贴的代码是

  @Override
  public void onCreate() {
  super.onCreate();
  AppEventsLogger.activateApp(this);


  try {
    PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(),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));
  }
} catch (NameNotFoundException e) {

} catch (NoSuchAlgorithmException e) {

}

//SoLoader.init(this, /* native exopackage */ false);

}

并在控制台上显示错误

  C:\Users\saket\pro\pro20\android\app\src\main\java\com\pro20\MainApplication.jav
  a:68: error: cannot find symbol
        PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackage
  Name(), PackageManager.GET_SIGNATURES);
        ^
    symbol:   class PackageInfo
    location: class MainApplication
  C:\Users\saket\pro\pro20\android\app\src\main\java\com\pro20\MainApplication.jav
  a:68: error: cannot find symbol
        PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackage
  Name(), PackageManager.GET_SIGNATURES);

          ^
    symbol:   variable PackageManager
    location: class MainApplication
  C:\Users\saket\pro\pro20\android\app\src\main\java\com\pro20\MainApplication.jav
  a:70: error: cannot find symbol
        for (Signature signature : info.signatures) {
             ^
    symbol:   class Signature
    location: class MainApplication
  C:\Users\saket\pro\pro20\android\app\src\main\java\com\pro20\MainApplication.jav
  a:71: error: cannot find symbol
          MessageDigest md = MessageDigest.getInstance("SHA");
          ^
    symbol:   class MessageDigest
    location: class MainApplication
  C:\Users\saket\pro\pro20\android\app\src\main\java\com\pro20\MainApplication.jav
  a:71: error: cannot find symbol
          MessageDigest md = MessageDigest.getInstance("SHA");
                             ^
    symbol:   variable MessageDigest
    location: class MainApplication
  C:\Users\saket\pro\pro20\android\app\src\main\java\com\pro20\MainApplication.jav
  a:73: error: cannot find symbol
          Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
                                                               ^
    symbol:   variable Base64
    location: class MainApplication
  C:\Users\saket\pro\pro20\android\app\src\main\java\com\pro20\MainApplication.jav
  a:73: error: cannot find symbol
          Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
                            ^
    symbol:   variable Base64
    location: class MainApplication
  C:\Users\saket\pro\pro20\android\app\src\main\java\com\pro20\MainApplication.jav
  a:73: error: cannot find symbol
          Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
          ^
    symbol:   variable Log
    location: class MainApplication
  C:\Users\saket\pro\pro20\android\app\src\main\java\com\pro20\MainApplication.jav
  a:75: error: cannot find symbol
      } catch (NameNotFoundException e) {
               ^
    symbol:   class NameNotFoundException
    location: class MainApplication
  C:\Users\saket\pro\pro20\android\app\src\main\java\com\pro20\MainApplication.jav
  a:77: error: cannot find symbol
      } catch (NoSuchAlgorithmException e) {
               ^
    symbol:   class NoSuchAlgorithmException
    location: class MainApplication
  10 errors
  :app:compileDebugJavaWithJavac FAILED

  FAILURE: Build failed with an exception.

  * What went wrong:
  Execution failed for task ':app:compileDebugJavaWithJavac'.
  > Compilation failed; see the compiler error output for details.

我出错了,请帮助我坚持下去。

1 个答案:

答案 0 :(得分:0)

这个问题是用openssl不下载最新版本的。如果您有64位计算机,则必须download openssl-0.9.8e X64而不是最新版本。

然后使用命令

生成密钥
  

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

它会要求输入密码“android”(不是其他)

现在它会起作用。