¿Hash de clave inválido después de compilar para apk y cómo resolver esto para muchos dispositivos?

He creado un botón "Iniciar sesión con Facebook" para mi aplicación, funciona normalmente en el dispositivo virtual, pero después de haber creado mi aplicación para apk y probarla en el dispositivo real, hay un problema "Error de clave inválida. La clave hash lULhSMXXXXXXXXXX no coincide con ningún hash de clave almacenado. Configure los hash de clave de la aplicación enhttp://developers.facebook.com/apps/XXXXXXX. Luego voy a developers.facebook.com/apps/XXXXXXX y agrego la clave hash lULhSMXXXXXXXXXXXX a la configuración y funcionó normalmente. Entonces tengo una pregunta, si instalo mi aplicación en muchos dispositivos diferentes, ¿cómo puedo hacer que funcione el botón "Iniciar sesión con Facebook" sin tener que agregar un hash clave para cada dispositivo como este? Gracias. Este es mi codigo

@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();

}

Respuestas a la pregunta(1)

Su respuesta a la pregunta