Я столкнулся со странным поведением при использовании com.codename1.io.Oauth2 и com.codename1.social.Login против Deezer. Хотя Deezer использует аргумент app_id вместо client_id, он по-прежнему принимает запрос с необходимыми аргументами.
-> URL-запрос, ожидаемый deezer: https://connect.deezer.com/oauth/auth.php?app_id=APP_ID&redirect_uri=REDIRECT_URI&perms=basic_access
Код для максимального соответствия:
@Override
protected Oauth2 createOauth2() {
Hashtable<String, String> params = new Hashtable<String, String>();
params.put("app_id", APPLICATION_ID);
params.put("perms", "basic_access");
return new Oauth2(OAUTH_URL, APPLICATION_ID, REDIRECT_URL, null, null, null, params);
}
-> URL-адрес, наконец, отправлен в deezer: https://connect.deezer.com/oauth/auth.php?client_id=APP_ID&redirect_uri=REDIRECT_URL&response_type=token&app_id=APP_ID&perms=basic_access
Откроется браузер. нормально и отображает экран входа в Deezer после перенаправления на login.php + args. Пока все нормально. Однако, как только я ввожу идентификатор пользователя / пароль, он снова выполняет перенаправление на логин. php без аргументов. Это странно, поскольку кажется, что он работает нормально, когда я проверяю URL-адрес из Firefox или Safari. Есть идеи помочь мне? Почему поведение отличается?
Кроме того, я думаю, было бы неплохо заставить Oauth2 реализовать интерфейс, используемый Login, а не? Или, по крайней мере, сделайте Oauth2.buildURL () защищенным.
Большое спасибо.
E