首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google Auth用户加密属性

Google Auth用户加密属性
EN

Stack Overflow用户
提问于 2021-11-05 01:18:57
回答 1查看 89关注 0票数 0

我在一个web项目上使用google auth,我正在尝试理解属性名称。屏幕截图显示了谷歌返回的user对象。我可以这样访问id_token

代码语言:javascript
运行
复制
this.user.Zb.id_token

为什么是Zb?一年前是这样的:

代码语言:javascript
运行
复制
this.user.wc.id_token

注意,那时候是wc,现在我的UI代码崩溃了。我遗漏了什么?为什么要使用这些属性名称?我如何才能访问id_token,而不管它的父属性名是什么?

这是UI代码:

代码语言:javascript
运行
复制
  async authenticate(): Promise<gapi.auth2.GoogleUser> {
    // Initialize gapi if not done yet
    if (!this.gapiSetup) {
      await this.initGoogleAuth();
    }

    // Resolve or reject signin Promise
    return new Promise(async () => {
      await this.authInstance.signIn().then(
        user => {
          this.user = user;
          console.log('this.user: ', this.user);
          
          this.cookieService.set('jwt', this.user.Zb.id_token, 365); // expires in one year (365 days)
          // this.cookieService.set('jwt', this.user.wc.id_token, 365); // expires in one year (365 days)

          this.owlerApiService.getHooterUsingIdTokenFromProvider()
            .subscribe((data: any) => {
              this.userDto = data;            
            },
            error => {
              console.log('error: ', error);
            });
        },
        error => this.error = error);
    });
  }

  async initGoogleAuth(): Promise<void> {
    // Create a new Promise where the resolve function is the callback passed to gapi.load
    const pload = new Promise((resolve) => {
      gapi.load('auth2', resolve);
    });

    // When the first promise resolves, it means we have gapi loaded and that we can call gapi.init
    return pload.then(async () => {
      // ClientId safe to put here? Looks like it:
      // https://stackoverflow.com/a/62123945/279516
      await gapi.auth2
        .init({ client_id: 'xxx.apps.googleusercontent.com' })
        .then(auth => {
          this.gapiSetup = true;
          this.authInstance = auth;
        });
    });
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-05 01:59:47

我不相信您正在以预期的形式使用id_token;我不清楚您是如何确定这是访问经过身份验证的用户的SDK值的正确方式,因为官方文档中没有提到这一点。

signIn()返回GoogleUser的一个实例,您可以在该实例上调用getAuthResponse()。返回的gapi.auth2.AuthResponse object包含id_token

代码语言:javascript
运行
复制
await this.authInstance.signIn().then(
    user => {
      this.user = user;
      console.log('this.user: ', this.user);
      
      this.cookieService.set('jwt', this.user.getAuthResponse().id_token, 365); // expires in one year (365 days)
      // …
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69847663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档