node.js - 'this' undefined in npm package -
i trying authenticate google through oauth2, , using googleapis npm package. this, creating small local package use in project:
package.js
npm.depends({ "googleapis": "2.0.1" }); package.describe({ name: 'google-tokens', summary: 'library requesting google api tokens', version: '0.0.1' }); package.onuse(function (api) { api.use(['underscore', 'http', 'service-configuration', 'oauth', 'accounts-oauth'], ['client', 'server']); api.addfiles('lib/tokens_client.js', 'client'); api.addfiles('lib/tokens_server.js', 'server'); api.export(['tokens']); });
tokens_server.js (package)
tokens = (function() { google = npm.require('googleapis'); oauth2client = google.auth.oauth2; var = {}; my.fetchtokens = function(code) { var clientid = meteor.settings.google.client_id; var clientsecret = meteor.settings.google.client_secret; var redirect = meteor.settings.google.redirect_url; oauth2client = oauth2client(clientid, clientsecret, redirect); var response = async.runsync(function(done) { oauth2client.gettoken(code, function(error, tokens) { done(error, tokens); }); }); console.log(response); return response; }; ....
however, above code returns
exception while invoking method 'addchannel' typeerror: cannot set property 'transporter' of undefined i20150316-23:33:03.520(1)? @ authclient (/users/madsh/programming/projects/youtubr/packages/google-tokens/.npm/package/node_modules/googleapis/node_modules/google-auth-library/lib/auth/authclient.js:25:20) i20150316-23:33:03.520(1)? @ oauth2client (/users/madsh/programming/projects/youtubr/packages/google-tokens/.npm/package/node_modules/googleapis/node_modules/google-auth-library/lib/auth/oauth2client.js:38:23) i20150316-23:33:03.520(1)? @ object.my.fetchtokens (packages/google-tokens/lib/tokens_server.js:11:1)
which referes part inside node_modules folder in .npm/package/node_modules/googleapis folder, contains following
'use strict'; var defaulttransporter = require('../transporters.js'); /** * base class authentication clients. */ function authclient() { this.transporter = new defaulttransporter(); <---------- failing line } /** * export authclient. */ module.exports = authclient;
i have no idea why happening, advice?
you should create auth client instance, i.e.
var client = new oauth2client(...
Comments
Post a Comment