Search code examples
node.jsgoogle-apigoogle-api-client

How to use the node google client api to get user profile with already fetched token?


Getting a user profile info through curl

curl -i https://www.googleapis.com/userinfo/v2/me -H "Authorization: Bearer a-google-account-access-token"

Getting a user profile info through node https get request

const https = require('https');

function getUserData(accessToken) {
    var options = {        
                    hostname: 'www.googleapis.com',
                    port: 443,
                    path: '/userinfo/v2/me',
                    method: 'GET',
                    json: true,
                    headers:{
                        Authorization: 'Bearer ' + accessToken            
                   }
            };
    console.log(options);
    var getReq = https.request(options, function(res) {
        console.log("\nstatus code: ", res.statusCode);
        res.on('data', function(response) {
            try {
                var resObj = JSON.parse(response);
                console.log("response: ", resObj);
            } catch (err) {
                console.log(err);
            }
        });
    });

    getReq.end();
    getReq.on('error', function(err) {
        console.log(err);
    }); 

}

var token = "a-google-account-access-token";
getUserData(token)

How can I use this google node api client library to get the user profile info provided that I already have the access token? I can use the code above to get the profile but I thought it's probably better off to use the google api library to do it, but I can't figure out how to do that using this node google api client library.

A temporary access token can be acquired through playing this playground


Solution

  • You can retrieve the user profile using the google node API client library. In this case, please retrieve the access token and refresh token as the scope of https://www.googleapis.com/auth/userinfo.profile. The sample script is as follows. When you use this sample, please set your ACCESS TOKEN.

    Sample script :

    var google = require('googleapis').google;
    var OAuth2 = google.auth.OAuth2;
    var oauth2Client = new OAuth2();
    oauth2Client.setCredentials({access_token: 'ACCESS TOKEN HERE'});
    var oauth2 = google.oauth2({
      auth: oauth2Client,
      version: 'v2'
    });
    oauth2.userinfo.get(
      function(err, res) {
        if (err) {
           console.log(err);
        } else {
           console.log(res);
        }
    });
    

    Result :

    {
      id: '#####',
      name: '#####',
      given_name: '#####',
      family_name: '#####',
      link: '#####',
      picture: '#####',
      gender: '#####',
      locale: '#####'
    }
    

    If I misunderstand your question, I'm sorry.