我已经建立了一个"登录Facebook"我的应用程序的按钮,它在虚拟设备中正常工作,但在我将我的应用程序构建到apk并在真实设备上测试后,出现了问题"无效的密钥哈希。密钥哈希lULhSMXXXXXXXXXX与任何存储的密钥哈希都不匹配。在http://developers.facebook.com/apps/XXXXXXX配置您的应用密钥哈希值。 然后我去developers.facebook.com/apps/XXXXXXX并将密钥哈希lULhSMXXXXXXXXXXXX添加到设置中并且它正常工作。所以我有一个问题,如果我在许多不同的设备上安装我的应用程序,我该如何制作"使用Facebook登录"按钮工作,而不必像这样为每个设备添加密钥哈希。谢谢。这是我的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions(Arrays.asList("email"));
callbackManager = CallbackManager.Factory.create();
loginButton.registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
loginFacebook(loginResult);
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
private void loginFacebook(final LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
String userId = null;
String name = null;
try {
userId = object.getString("id");
name = object.getString("name");
} catch (JSONException e) {
e.printStackTrace();
}
Profile profile = Profile.getCurrentProfile();
Log.d("Shreks Fragment onSuccess", "" + profile);
Intent i = new Intent(LoginActivity.this, Intent.class);
startActivityForResult(i, 0);
finish();
}
});
request.executeAsync();
}
答案 0 :(得分:1)
我们必须在Facebook开发者处添加三个关键哈希值。
1.在Android应用程序中使用包管理器。
keytool -exportcert -alias androiddebugkey -keystore C:\Users\username\.android\debug.keystore | C:\openssl-0.9.8k_X64\bin\openssl sha1 -binary | C:\openssl-0.9.8k_X64\bin\openssl base64
2.使用命令行调试密钥
keytool -exportcert -alias app_alias -keystore C:\Users\usename\app_keysrore.jks | C:\openssl-0.9.8k_X64\bin\openssl sha1 -binary | C:\openssl-0.9.8k_X64\bin\openssl base64
3.使用命令行释放密钥
yum install qemu-system-arm qemu
请添加所有关键哈希并再次检查。
注意: