Google Sign-In JavaScript 客户端无法在 PWA App 上运行



从昨天开始,当我使用 gapi.auth2 在 Android 上安装的 PWA 应用程序上进行 Google 登录时,该应用程序会打开浏览器窗口以选择用户,但它仍然是空白的。 Android Chrome浏览器上的同一页面会像往常一样打开用户选择。代码是相同的,来自同一服务器。代码在超过 15 天内未被修改。我认为问题是谷歌服务器的gapi JS客户端代码发生了一些变化。 检查 chrome 上的 PWA Google 登录标签页会显示以下错误:

未捕获 无法从 URL 哈希获取父源!

谷歌开发者控制台上的起源是可以的。

有人知道如何解决这个问题吗?

编辑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:错误屏幕截图

截图

我遇到了这里提到的类似问题。我尚未在凭据 -> 我的 OAuth 客户端 ID -> 授权的 JavaScript 源下注册我的域。通过添加,它开始工作。检查应用的类似情况。它可能会有所帮助。

这个错误应该被修复。无法再复制它。

最新更新