我使用MGWT创建了一个使用GWT-oauth2登录Google的网络应用程序。
在标准的iOS Safari中一切运行良好但是当用户执行“添加到主屏幕”并重新启动应用程序而没有地址和按钮栏时,登录后它将不会从Google的登录窗口重定向。它只显示一个空白的白页。
我使用Google API控制台(Access)进行重定向: 重定向URI:http://mobile.XXXXXXXX.com/appimpl/oauthWindow.html
感谢任何帮助。 卡尔
public void onModuleLoad() {
MGWT.applySettings(MGWTSettings.getAppSetting());
login();
}
public static void login(){
final LoginServiceAsync scheduleService = GWT.create(LoginService.class);
String AUTH_URL = "https://accounts.google.com/o/oauth2/auth";
String CLIENT_ID = "XXXXXXXXXXX.apps.googleusercontent.com"; // available from the APIs console
String DOCS_SCOPE = "https://docs.google.com/feeds/";
String USER_SCOPE = "https://www.googleapis.com/auth/userinfo.email";
String PROFILE_SCOPE = "https://www.googleapis.com/auth/userinfo.profile";
AuthRequest req = new AuthRequest(AUTH_URL, CLIENT_ID)
.withScopes(DOCS_SCOPE, USER_SCOPE, PROFILE_SCOPE); // Can specify multiple scopes here
Auth.get().login(req, new Callback<String, Throwable>() {
@Override
public void onSuccess(final String token) {
Log.info("LoginImpl Login Success");
String url = "https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token="+token+"&callback=";
JSONRequest.get(url, new JSONRequestHandler() {
@Override
public void onRequestComplete(JavaScriptObject json) {
Log.info("onRequestComplete()");
JSONObject obj = new JSONObject(json);
JSONValue emailValue = obj.get("email");
String email = emailValue.toString();
email = email.replace('"', ' ');
scheduleService.logInGoogle(token, email, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable error) {
Log.info("loginGoogleFail");
}
@Override
public void onSuccess(Void loginURL) {
System.out.println("GWT.getHostPageBaseURL() "+GWT.getHostPageBaseURL());
String baseURL = GWT.getHostPageBaseURL().replace("login", LoginImpl.path);
if(!GWT.isProdMode()){
baseURL += localCodesvr;
}
Log.info("logInGoogle success baseURL "+baseURL);
Window.Location.replace(baseURL);
}
});
}
});
}
@Override
public void onFailure(Throwable throwable) {
Log.info("Login Failure "+throwable.getLocalizedMessage());
}
});
}
答案 0 :(得分:0)
我们偶然发现了类似的,可能与GWT完全相同的问题。 GWT根本无法在全屏(移动网络应用)模式下将浏览器识别为Safari,并且无法加载正确的排列(它会尝试加载未定义的排列)。我们怀疑这可能与用户代理在该模式下有所不同有关。参见:
ipad user agent changes during use?
和