我面对使用Deezer的com.codename1.io.Oauth2和com.codename1.social.Login的奇怪行为。尽管Deezer使用参数“ app_id”代替“ client_id”,但它仍接受带有必需参数的请求。
-> deezer预期的URL请求: 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
这将使浏览器正常运行,并重定向到login.php + args后显示Deezer登录屏幕。到目前为止还好。但是,一旦我输入了userid / password,它将再次重定向到login.php,而没有参数。这很奇怪,因为当我从Firefox或Safari测试URL时似乎可以正常工作。有什么办法可以帮助我吗?为什么行为不同?
此外,我想让Oauth2实现Login所使用的接口是一个好主意,不是吗?或至少使Oauth2.buildURL()受保护。
非常感谢。
E