Angular:如何获取Google访问令牌 [英] Angular : how can I get Google access token

查看:112
本文介绍了Angular:如何获取Google访问令牌的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Angular 4获取访问令牌。
当用户使用Google登录时,我会获得以下数据。

I am trying to get Access token using Angular 4. When the user logIn using Google I get the following Data.

authToken // *
id
email
.
.
.
name




  • 我认为变量 authToken 不是访问令牌,因为当我尝试使用以下代码(春季启动)进行验证时,

    • I think that the variable authToken is not the access token because when I try to verify it using the following code ( spring boot),

      GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(),
                  JacksonFactory.getDefaultInstance())
                          .setAudience(Collections.singletonList(
                                  "ID_CLIENT")
                          .build();
          try {
              GoogleIdToken idToken = verifier.verify(accessToken);
              if (idToken != null) {
                  Payload payload = idToken.getPayload();
                  String userId = payload.getSubject();
                  System.out.println("User ID: " + userId);
                  String email = payload.getEmail();
                  boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());
                  String name = (String) payload.get("name");
                  String pictureUrl = (String) payload.get("picture");
                  String locale = (String) payload.get("locale");
                  String familyName = (String) payload.get("family_name");
                  String givenName = (String) payload.get("given_name");
                  System.out.println(accessToken);
                  return accessToken;
              } else {
                  System.out.println("null");
                  return "**this is not a valid Token**";
              }
          } catch (IllegalArgumentException e) {
              return "IllegalArgumentException";
          }
      

      返回 IllegalArgumentException

      所以我如何使用 Google访问令牌 Angular

      推荐答案

      我正在使用Angular 4,因此那里没有令牌变量,与版本5不同和6,
      ,所以我遵循从此得到的答案

      I am using Angular 4, so there is no token variable there, unlike version 5 and 6, so I follow answer from this

      I solved this by going into node_modules/angular4-social-login and making a few changes.
      
      First go into /entities and change the SocialUser model and include "token: string;" like so:
      export declare class SocialUser {
      provider: string;
      id: string;
      email: string;
      name: string;
      photoUrl: string;
      token: string;
      }
      
      Go to angular4-social-login.umd.js and for every function of the GoogleLoginProvider where the SocialUser object is resolved - find "resolve(user)" - add the line:
      user.token = _this.auth2.currentUser.get().getAuthResponse().id_token
      
      Your authService should now return the idToken for the user as user.token.
      
      (3) - for Facebook accessToken, you follow similiar logic. Go to angular4-social-login.umd.js; and for every FacebookLoginProvider function that resolves the user (again search for "resolve(user)"):
      Under FB.login(function (response) {
      //get the token here
      var accessToken = response.authResponse.accessToken
      ...}
      
      (4) Where the user is being modified, simply add user.token = accessToken before resolving ✨ ✨ ✨
      




      ---------------- -------->令牌和身份验证令牌不同

      这篇关于Angular:如何获取Google访问令牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆