Реальный ответ можно найти в спецификации, json неупорядочен. Однако, как человек, я приказал своим элементам в порядке важности. Мало того, что это более логичный способ, было легче читать. Может быть, автору спецификации никогда не приходилось читать JSON, я делаю .. Итак, вот исправить:
/**
* I got really tired of JSON rearranging added properties.
* Specification states:
* "An object is an unordered set of name/value pairs"
* StackOverflow states:
* As a consequence, JSON libraries are free to rearrange the order of the elements as they see fit.
* I state:
* My implementation will freely arrange added properties, IN SEQUENCE ORDER!
* Why did I do it? Cause of readability of created JSON document!
*/
private static class OrderedJSONObjectFactory {
private static Logger log = Logger.getLogger(OrderedJSONObjectFactory.class.getName());
private static boolean setupDone = false;
private static Field JSONObjectMapField = null;
private static void setupFieldAccessor() {
if( !setupDone ) {
setupDone = true;
try {
JSONObjectMapField = JSONObject.class.getDeclaredField("map");
JSONObjectMapField.setAccessible(true);
} catch (NoSuchFieldException ignored) {
log.warning("JSONObject implementation has changed, returning unmodified instance");
}
}
}
private static JSONObject create() {
setupFieldAccessor();
JSONObject result = new JSONObject();
try {
if (JSONObjectMapField != null) {
JSONObjectMapField.set(result, new LinkedHashMap<>());
}
}catch (IllegalAccessException ignored) {}
return result;
}
}
Когда вы регистрируете свое приложение у поставщика Oauth, вам нужно будет указать URL-адрес перенаправления. Сервер oauth будет перенаправлен после успешной аутентификации.
Посмотрите https://www.oauth.com/oauth2-servers/redirect-uris/
.