【问题标题】:Google sign button disappears once logged out while implementing google authentication在实施谷歌身份验证时,一旦注销,谷歌签名按钮就会消失
【发布时间】:2018-07-01 02:04:35
【问题描述】:

我正在尝试在 AngularJS 2 中实现 Google 身份验证

我关注了this链接

我已经构建了一个应用程序,包含 4 个组件

  1. 标题组件
  2. 登录组件
  3. 详细组件
  4. 应用组件(根)

登录组件有登录页面代码。因此,我在 login.component.html ->

中包含以下内容
<div class="g-signin2" data-onsuccess="onSignIn"></div>

注销按钮包含在 Header 组件中。代码如下:

header.component.html

 <div>
    <span class="log-out" (click)="signOut()"> Logout </span>
  </div>

header.component.ts

constructor (private router:Router, private ngZone: NgZone){

gapi.load('auth2', function () {
  gapi.auth2.init()
});

window['signOut'] = (user) => ngZone.run(() => this.signOut());
}

signOut() {
  var auth2 = gapi.auth2.getAuthInstance();
  auth2.signOut().then(function () {
  console.log('User signed out.');
   });
    this.router.navigate(['']);
 }

登出成功后会跳转回登录页面,地址为'',在app-routing.module中设置

当我注销时,我被重定向到登录页面,但 Google 签名按钮消失了。刷新后会再次出现

如果我遗漏了什么,请指导我!

【问题讨论】:

  • 可能是因为您的 this.router.navigate(['']); 不在 signOut 方法范围内...将其移至您的 console.log 所在的位置
  • 我做到了。它仍然没有出现。只有在我刷新后才会出现。
  • here 你可以找到你的解决方案并理解为什么不工作......另外,由于我提到的代码问题,我建议你阅读一些关于异步操作的内容。问候

标签: angular google-signin googlesigninapi


【解决方案1】:

我解决了我的问题:

所以,我了解到包含 this.router.navigate[''] 不会触发整个页面的重新加载。它只是将我导航到 HTML 中所需的 div。

我已经在 index.html 文件中加载了 platform.js。为了让它加载,我们需要调用 window.open() 函数。

因此我将其替换为 window.open("/","_self")。这里“/”是根页面(在我的例子中是登录页面),“_self”意味着它会在同一个标​​签上重定向到你。

【讨论】:

    猜你喜欢
    • 2019-09-29
    • 2019-11-24
    • 2023-03-10
    • 2017-12-14
    • 2019-11-05
    • 2012-09-20
    • 2020-08-15
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多