如何在Angular 8中获取Angularx-social-login的刷新令牌

6

演示

你好,我在 Angular8 应用程序中使用版本为 2.2.1angularx-social-login。由于 Google 授权令牌在 1 小时后过期,所以我必须调用刷新令牌的方法。我已经查阅了许多网站,但没有找到解决方案。我已经安装并在应用程序模块中声明了它,现在在登录组件中使用它来获取从 Google 登录按钮点击中获取的授权令牌、电子邮件地址和 ID。但我不知道如何在附近调用刷新方法以处理过期时间。请帮忙。

HTML:

<button type="submit" class="btn btn-primary btn-block" (click)="signInWithGoogle()">Sign in with Google</button>

Ts:
public signInWithGoogle(): void {
    let socialUser = this.oauthService.signIn(GoogleLoginProvider.PROVIDER_ID).then((userData) => {
      if(userData.idToken){
      
      } else {
        alert('danger')
      }
   });
  }

app.module.ts:

import { SocialLoginModule, AuthServiceConfig } from "angularx-social-login";
import { GoogleLoginProvider } from "angularx-social-login";

 imports: [
    SocialLoginModule
  ],
  providers: [
    {
      provide: AuthServiceConfig,
      useFactory: provideConfig
    }],

let config = new AuthServiceConfig([
  {
    id: GoogleLoginProvider.PROVIDER_ID,
    provider: new GoogleLoginProvider("1051927480520-u87cv859uap5e6t4r5f52mk96a8a6nhe.apps.googleusercontent.com")
  },
]);

export function provideConfig() {
  return config;
}

通过演示,我能够获取我选择的 Gmail 帐户的详细信息,但令牌将在一小时内过期,因此我需要在其过期之前获取刷新令牌。请帮忙。

1个回答

0

我不确定这个问题是否还有关联,但是angularx-social-login包中的SocialAuthService实际上公开了一种方法来实现这一点 - refreshAuthToken(providerId: string): Promise<void>;

你可以简单地这样做:

refreshUserToken() {
    this.socialAuthService.refreshAuthToken(GoogleLoginProvider.PROVIDER_ID).then(() => {
      // Any post-refresh actions if needed
    });
  }

或者:

async refreshUserToken() {
    await this.socialAuthService.refreshAuthToken(GoogleLoginProvider.PROVIDER_ID);
  }

如果您已经订阅了authState的更改,那么在刷新后,您将获得一个新的SocialUser(带有新的、刷新后的authToken)。请参见Github上的实现方法。

免责声明:查看实现时,它仅适用于Google登录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接