如何在angular8中获得angularx社交登录的刷新令牌



演示

嗨,我在Angular8应用程序中使用2.2.1版本的angularx-social-login。在这里,由于googleauth令牌在1小时后过期,我必须调用刷新令牌的方法。我已经浏览了许多网站,但无法获得解决方案。我已经安装并声明了应用内模块,现在使用登录内组件从登录谷歌按钮点击中获取身份验证令牌和电子邮件地址、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帐户的详细信息,但令牌将在一小时后过期,我需要在它过期之前获得刷新令牌。请帮助

我不确定这个问题是否仍然相关,但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上的此方法实现。

免责声明:看看实现它只为谷歌登录工作。

最新更新