Angular: как получить токен доступа Google - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь получить токен доступа с помощью Angular 4. Когда пользователь входит в систему с помощью Google, я получаю следующие данные.

authToken // *
id
email
.
.
.
name
  • Я думаю, что переменная authTokenне access token, потому что когда я пытаюсь проверить это с помощью следующего кода (пружинная загрузка),

    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

1 Ответ

0 голосов
/ 28 сентября 2018

Я использую Angular 4, поэтому там нет никакой переменной токена, в отличие от версий 5 и 6, поэтому я следую ответу из этого

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 ✨ ✨ ✨

------------------------> токен и authtoken являются разными

...