Using Google People API with Cloud Functions for F

2020-07-18 05:22发布

I'm trying to get a list of contacts from the Google People API with Cloud Functions for Firebase but I'm only getting an empty object as the response. Any thoughts? Cloud Functions code below:

var functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

var google = require('googleapis');
var people = google.people('v1');

exports.contacts = functions.https.onRequest((request, response) => {
  admin.database().ref('/settings/contacts/credentials/serviceAccount').once("value", function(data) {
    var authClient = new google.auth.JWT(
      data.child('clientEmail').val(),
      null,
      data.child('privateKey').val(),
      ['https://www.googleapis.com/auth/contacts'],
      null
    );

    authClient.authorize(function (err, tokens) {
      if (err) {
        console.error(err);
        response.end();
        return;
      }

      // Make an authorized request to list contacts.
      people.people.connections.list({auth: authClient, resourceName: 'people/me'}, function(err, resp) {
        if (err) {
          console.error(err);
          response.end();
          return;
        }

        console.log("Success");
        console.log(resp);
        response.send(resp);
      });

    });
  });

});

In the Firebase console logs, the success message is printed along with the empty JSON object. Seems to be authorizing successfully so not quite sure what's going on. Any help would be greatly appreciated.

1条回答
Explosion°爆炸
2楼-- · 2020-07-18 06:28

Try wrapping the api call in a Promise. I had a similar issue until I wrapped mine in a promise. Also in the specific example linked to here I needed to use response.data and not response.labels with the the resolve part of the promise. console.log() will be your best friend here.

https://cloud.google.com/community/tutorials/cloud-functions-oauth-gmail

https://github.com/GoogleCloudPlatform/community/blob/master/tutorials/cloud-functions-oauth-gmail/index.js

查看更多
登录 后发表回答