JavaScript-клиент Google для входа не работает в приложении PWA - PullRequest
0 голосов
/ 09 октября 2018

Со вчерашнего дня, когда я использую gapi.auth2 для входа в Google в установленном приложении PWA на Android, приложение открывает окно браузера, чтобы выбрать пользователя, но оно остается пустым.На этой же странице в браузере Chrome на Android выбор пользователя, как обычно, открывается.Код тот же, с того же сервера.Код не был изменен более чем за 15 дней.Полагаю, проблема в том, что в клиентском коде gapi JS на серверах Google произошли некоторые изменения.Проверка вкладки Вход в Google PWA в Chrome показывает следующую ошибку:

Uncaught Не удалось получить родительский источник из хэша URL-адреса!

Источник в консоли разработчика Google:ок.

Кто-нибудь знает, как решить эту проблему?

Редактировать 1: Блок кода

initGoogle() {
    this.ngRedux.dispatch({ type: SN_INIT_GOOGLE });
    Observable.create((observer: Observer<any>) => {

        let head = document.getElementsByTagName('head');
        (<any>window).__ongload = () => {
            gapi.load('auth2', () => {
                gapi.auth2.init({
                    client_id: `${AppConfig.google.clientID}`
                }).then(() => {
                    this.auth2 = gapi.auth2.getAuthInstance();
                    this.googleInitiated();
                    observer.complete();
                }, (err) => {
                    this.log.error(err);
                    observer.error(err);
                });
            });
        };
        let script: HTMLScriptElement = document.createElement('script');
        script.src = 'https://apis.google.com/js/platform.js?onload=__ongload';
        script.type = 'text/javascript';
        head[ 0 ].appendChild(script);
    }).pipe(
        timeout(AppConfig.google.timeout),
        retry(AppConfig.google.retries),
        catchError(error => {
            this.googleInitError();
            return observableEmpty();
        }),
        take(1)
    ).subscribe();
}

async googleLogin(scope: string = 'profile email', rerequest: boolean = false, type: string = SN_GOOGLE_LOGIN): Promise<GoogleUser> {
    let goopts = {
        scope: this.ngRedux.getState().socialNetworks.getIn([ 'google', 'grantedScopes' ]),
        prompt: rerequest ? 'consent' : undefined
    };
    try {
        const user: GoogleUser = await this.auth2.signIn(<any>goopts);
        ...
        return user;
    } catch (error) {
        ...
        return error;
    }
}

Редактировать 2: Снимок экрана ошибки

Скриншот

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Эта ошибка должна быть исправлена.Больше не могу воспроизвести.

0 голосов
/ 09 октября 2018

У меня была похожая проблема, как упомянуто здесь .Я не зарегистрировал свой домен в разделе Учетные данные -> Мой идентификатор клиента OAuth -> Авторизованные источники JavaScript.Добавив, он начал работать.Проверьте аналогичный случай для вашего приложения.Это может помочь.

...