2014-07-24 40 views
2

我在android系统得到了哈希键从下面的代码:在Facebook的应用程序无效的哈希键安卓

try { 
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 
PackageManager.GET_SIGNATURES); 
for (Signature signature : packageInfo.signatures) { 
MessageDigest md = MessageDigest.getInstance("SHA"); 
md.update(signature.toByteArray()); 
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
} 
} 
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()); 
} 

但它是无效键...请建议如何验证Facebook登录哈希键....

回答

0

我认为问题在于您可能没有更新Facebook开发者帐户中的keyhash。请参考:https://developers.facebook.com/docs/android/getting-started

使用生成Keyhash:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64 

,并更新到你的Facebook devloper网站,应用程序选项卡下,一般设置

9

你得到与调试键的哈希键..如果你没有在调试模式下签名包并运行应用程序,这可能会起作用。你需要做的是:

1)转到清单文件并添加到应用程序android:debuggable =“true”。

2)签署应用程序,capy并手动安装到您的设备或从命令行使用“adb install path_to_apk”。

3)现在运行您的应用程序并监视logcat。

4)你会得到一个新的密钥,这将是与密钥Facebook应用程序显示在错误味精中的匹配键,你得到的钥匙现在有最后一个=符号。

5)注册的Facebook开发者网站这一关键

备用招数

你可以做一件事只需注册这是在错误味精“关键哈希显示关键###不匹配任何存储的密钥哈希值“只需在###结尾添加=。它会像### =

你完成了!希望这会起作用。

+3

谢谢...我试图通过生成签名的版本我自己的哈希键,但没有奏效。所以我尝试了替代伎俩..工作:) – AB1209

+0

的伎俩工作! –

0

将其分配给按钮的单击并从logcat获取Key Hash。

Button getKeyHash = (Button) findViewById(R.id.button_key_hash); 
    getKeyHash.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //Key Hash 
      try { 
       PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 
         PackageManager.GET_SIGNATURES); 
       for (Signature signature : packageInfo.signatures) { 
        MessageDigest md = MessageDigest.getInstance("SHA"); 
        md.update(signature.toByteArray()); 
        Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
       } 
      } catch (PackageManager.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()); 
      } 
     } 
    }); 

现在去你的应用程序在https://developers.facebook.com/apps 。然后点击设置,添加你的密钥哈希并保存。 enter image description here

1

将此函数添加到您的类中,然后在oncreate方法中调用此函数,然后生成sign apk并在设备中运行sign apk并检查log-cat,将生成的hash key复制到facebook developer console。

private void showHashKey() 
{ 
    // Add code to print out the key hash 
    try { 
     PackageInfo info = getPackageManager().getPackageInfo(
       "com.kisan.kisan", 
       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 (PackageManager.NameNotFoundException e) { 

    } catch (NoSuchAlgorithmException e) { 

    } 

} 

检查Facebook验证,它会正常工作