Веб-приложение MGWT не будет перенаправлять обратно со страницы входа в полноэкранный режим iphone

Я создал веб-приложение с использованием MGWT, которое использует GWT-oauth2 для входа в Google.

Все работает нормально в стандартном iOS Safari, но когда пользователь делает «Добавить на главный экран» и перезапускает приложение без панели адреса и кнопок, оно не перенаправляется обратно из окна входа в Google после входа в систему. Он показывает только пустую белую страницу.

Я использую Google API Console (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());
        }
    });
}

person Carl    schedule 06.09.2012    source источник
comment
Вы можете опубликовать соответствующий код?   -  person Daniel Kurka    schedule 09.09.2012
comment
Добавил соответствующий код в исходное сообщение. MGWT выглядит очень многообещающе. Надеюсь, я смогу преодолеть это маленькое препятствие.   -  person Carl    schedule 10.09.2012
comment
Думаю, я знаю, что происходит. MGWT.applySettings(MGWTSettings.getAppSetting()), вероятно, устанавливает ‹meta name=apple-mobile-web-app-capable content=yes /› и когда приложение запускается в полноэкранном режиме, вы больше не можете использовать URL-адрес (поскольку его там нет), чтобы отправить токен обратно клиенту. Вместо этого используйте: settings = new MGWTSettings(); settings.setFullscreen(false); settings.setPreventScrolling(false); Это не дает вам полный экран в автономном режиме, но это работает.   -  person Carl    schedule 12.09.2012


Ответы (1)


Мы только что наткнулись на похожую, возможно, точно такую ​​же проблему с GWT. GWT вообще не распознает браузер в полноэкранном режиме (мобильное веб-приложение) как Safari и не может загрузить правильную перестановку (он пытается загрузить «неопределенную» перестановку). Мы подозреваем, что это может иметь какое-то отношение к тому, что пользовательский агент в этом режиме отличается. Видеть:

изменения агента пользователя ipad во время использования?

и

В каком браузере есть этот странный пользовательский агент? (устройство iOS)

person Learner    schedule 28.06.2016