首页 > 解决方案 > 我正在使用带有 angular11 的 angularx-social-login 来通过 gmail 登录,我正在获取 accessToken 作为响应,但我想要授权码作为响应

问题描述

我需要授权码

{“代码”:“4/yU4cQZTMnnMtetyFcIWNItG32eKxxxgXXX-Z4yyJJJo.4qHskT-UtugceFc0ZRONyF4z7U4UmAI”}

像这样响应刷新令牌

  {
  provide: 'SocialAuthServiceConfig',
  useValue: {
    autoLogin: true,
    providers: [
      {
        id: GoogleLoginProvider.PROVIDER_ID,
        provider: new GoogleLoginProvider(CLIENT_ID, {
          response_type: 'authorization_code',
          access_type: 'offline',
        }),
      },
    ],
   } as SocialAuthServiceConfig,
  }

标签: angularoauth-2.0google-apirefresh-tokenangular-social-login

解决方案


您需要了解 Oauth2 的工作原理 当用户同意您的访问时,将返回授权码。

然后,您的应用程序接收授权代码并与授权服务器交换访问令牌和刷新令牌。

访问令牌可用于访问 Google api 和私人用户数据。然而,这个令牌是短暂的,它只会工作一个小时。

刷新令牌是长期存在的,可用于在过期后请求新的访问令牌。

我需要这样的授权码来响应刷新令牌

因此,为了响应此语句,刷新令牌响应将永远不会返回授权代码。只有在流程的第一步请求用户同意才会返回授权码。

如果您有兴趣了解 Oauth2 的工作原理,您可能会感兴趣。用 curl 理解 Oauth2。


推荐阅读