javascript - 从 google people api 获取联系人

标签 javascript node.js rest google-contacts-api google-people-api

const express = require('express'),
  bodyParser = require('body-parser'),
  Sequelize = require('sequelize')
const app=express()
app.use(bodyParser.json())

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



const nconf = require('nconf');
const readline = require('readline');

const plus = google.plus('v1');
const path = require('path');
const OAuth2Client = google.auth.OAuth2;

nconf.argv().env().file(path.join(__dirname, '/oauth2.keys.json'));
const keys = nconf.get('web');

const CLIENT_ID = '1058912681476-uat19si2uli37vlehs2avqfue2l0b6ku.apps.googleusercontent.com';
const CLIENT_SECRET = 'PbY8AVICTQsywb4qiqCJ8gMB';
const REDIRECT_URL = 'urn:ietf:wg:oauth:2.0:oob';

const oauth2Client = new OAuth2Client(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

function getAccessToken (oauth2Client, callback) {
  // generate consent page url
  const url = oauth2Client.generateAuthUrl({
    access_type: 'offline', // will return a refresh token
    scope: 'https://www.googleapis.com/auth/plus.me' // can be a space-delimited string or an array of scopes
  });

  console.log('Visit the url: ', url);
  rl.question('Enter the code here:', code => {
    // request access token
    oauth2Client.getToken(code, (err, tokens) => {
      if (err) {
        return callback(err);
      }
      // set tokens to the client
      // TODO: tokens should be set by OAuth2 client.
      oauth2Client.credentials=tokens;
      callback();
    });
  });
}

// retrieve an access token
getAccessToken(oauth2Client, () => {
  // retrieve user profile
  plus.people.get({ userId: 'me', auth: oauth2Client }, (err, profile) => {
    if (err) {
      throw err;
    }
    console.log(profile.displayName, ':', profile.tagline);
  });
});







//here-not working
contacts.people.connections.list({
    auth: oauth2Client //authetication object generated in step-3
}, function (err, response) {
      // handle err and response
      if(err){
          throw err;
      }
      console.log(response.names);
});


app.listen(8080)

我正在尝试从 google people api( https://developers.google.com/people/api/rest/v1/people.connections/list ) 获取用户的联系人,但是当我尝试调用contacts.people.connection.list() 时,出现错误:

缺少必需参数:resourceName 在 Object.createAPIRequest (/home/ubuntu/workspace/contactmanager/backend/node_modules/googleapis/build/src/lib/apirequest.js:94:18);

最佳答案

错误说明了一切。资源名称是必需参数。如果您查看people.connections.list您必须提供“people/me”值作为参数。其他值无效。

GET https://people.googleapis.com/v1/{resourceName=people/me}/connections

关于javascript - 从 google people api 获取联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48245930/

相关文章:

json - 如何在 Glassfish 4 上创建一个简单的 JSON Jersey 2.x RESTful Web 服务?

c# - 如何在 C# 中使用内容和 header 调用 Rest API?

java - 在Java中解析 application/json Jersey @Consumes MIME 类型的最佳方法是什么?

javascript - jquery if 语句检查输入是否有值,否则在单击链接时自动填充

javascript - jQuery 对象后代过滤

javascript - Visual Studio Code 调试控制台中的 Node.js readline

mysql - 使用 node-mysql 从 heroku Node 应用程序连接到 Amazon RDS 数据库

JavaScript ES6 - 这是扩展语法还是剩余语法?

javascript - 将动画脚本应用于不同的 Div/img

javascript - Node VM - require() 在第一级正常,在第二级失败