我正在尝试使用我的debbug哈希密钥,即:“e3U9nzK7A8gyWoCiNUZQA / C + bZI =”。 但每次我把它放在我的Facebook应用程序的关键哈希部分内,它会自动更改为“e3U9nzK7A8gyWoCiNUZQA%2FC%2BbZI%3D”,这使得我的应用无用。 我使用两种方法获取此密钥,并返回相同的内容:keytool -exportcert -alias androiddebugkey -keystore~ / .android / debug.keystore | openssl sha1 -binary | openssl base64
和:
private void getAppKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0));
Log.d("Hash key", something);
}
}
catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
Log.e("name not found", e1.toString());
}
catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
Log.e("no such an algorithm", e.toString());
}
catch (Exception e){
Log.e("exception", e.toString());
}
}
答案 0 :(得分:1)
试试这个
try {
PackageInfo info = getPackageManager().getPackageInfo(com.domain,
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("PXR", com.domain.Base64.encodeBytes(md.digest()));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
答案 1 :(得分:0)
我有同样的问题,并意识到这是Facebook的一个错误。见link。非常讨厌。
修改强>
唯一可行的解决方案(但很难看)直到解决它似乎是强制通过Web界面登录,因为SSO是使用hashkey的。
如果使用登录按钮:
LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
authButton.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
来源:Android - Force Facebook connection - Stack Overflow
修改2
虽然可以解决;我问了一个朋友(通过Skype,他在Mac上)为我添加它们。他设法做到了(但我不知道如何)。
编辑3
现在这个问题似乎已经为我解决了。输入的hashkeys不再被重写。无论是由fb-team解决还是只是需要我重新启动计算机,我都不知道。