MGWT Web App 不会在 iPhone 全屏模式下从登录页面重定向回来



我使用MGWT创建了一个web应用程序,该应用程序使用GWT-oauth2登录谷歌。

在标准的iOS Safari中运行一切都很好,但当用户执行"添加到主屏幕"并在没有地址和按钮栏的情况下重新启动应用程序时,它不会在登录后从谷歌的登录窗口重定向回来。它只显示一个空白的白色页面。

我使用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());
        }
    });
}

我们刚刚在GWT中偶然发现了一个类似的、可能完全相同的问题。GWT在全屏(移动web应用程序)模式下根本无法将浏览器识别为Safari,并且无法加载正确的排列(它试图加载"未定义"的排列)。我们怀疑这可能与用户代理在该模式下的不同有关。参见:

ipad用户代理在使用过程中发生更改?

哪个浏览器有这个奇怪的用户代理?(IOS设备)

相关内容

最新更新