我必须在我的Android应用程序中使用登录Facebook功能。为此,我需要生成密钥哈希。我正在使用以下代码生成facebook密钥哈希。
public class GenerateFacebookSignature extends Application {
@Override
public void onCreate() {
super.onCreate();
printHashKey();
}
public void printHashKey() {
try {
PackageInfo packageInfo = getPackageManager().getPackageInfo("com.example.facebooklogin", PackageManager.GET_SIGNATURES);
for (Signature signature : packageInfo.signatures) {
MessageDigest messageDigest = MessageDigest.getInstance("SHA");
messageDigest.update(signature.toByteArray());
Log.d("FaceBookKeyHash:", Base64.encodeToString(messageDigest.digest(), Base64.DEFAULT));
}
}
catch (PackageManager.NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}
}
}
此类位于名为com.example.facebooklogin.application
的不同包中,而我的其他应用程序类位于包com.example.facebooklogin
中。
我已将其包含在我的manifest.xml文件中,但它没有在logcat中显示任何哈希键。
<application
android:name=".application.GenerateFacebookSignature">
</application>
有人能指出我做错了吗?
答案 0 :(得分:2)
它引发了异常,因为找不到"com.example.facebooklogin"
。
将其更改为您的包名称,它应该有效。你可以这样使用Context#getPackageName()
:
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);