req.user.identities[0] provider is something specific for my app ignore that line.. The rest you can use it as is.
Invalid grant usually means that you didn't set the correct oauth scopes. Have a look to Google's playground: https://developers.google.com/oauthplayground/?hl=es-419 2013/6/10 Jyoti Chettri <[email protected]> > Here is I wrote and keep getting error > > No data received > Unable to load the webpage because the server sent no data. > Here are some suggestions: > > - > Reload<http://localhost:1234/callback?code=4/ri8n_5GnHV_w4zTgtMuCN-XtZO6W.EvsvqZmTzkQSgrKXntQAax2W0wldfgI> > this > webpage later. > > Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection > without sending any data. > > > > Please help. > > > >> function getContactsFromGoogleApi (access_token, req, res, next) { >>> >>> request.get({ >>> url: 'https://www.google.com/m8/feeds/contacts/default/full', >>> qs: { >>> alt: 'json', >>> 'max-results': 1000, >>> 'orderby': 'lastmodified' >>> }, >>> headers: { >>> 'Authorization': 'GoogleLogin auth=' + access_token, >>> 'GData-Version': '3.0' >>> } >>> }, function (err, resp, body) { >>> if(resp.statusCode === 401){ >>> return res.redirect('index'); >>> } >>> var feed = JSON.parse(body); >>> >>> var users = feed.feed.entry.map(function (c) { >>> var r = {}; >>> if(c['gd$name'] && ['gd$fullName']){ >>> r.name = c['gd$name']['gd$fullName']['$t']; >>> } >>> if (c['gd$email'] && c['gd$email'].length > 0) { >>> r.email = c['gd$email'][0]['address']; >>> r.nickname = >>> r.email;//c['gd$email'][0]['address'].split('@')[0]; >>> } >>> if(c['link']){ >>> var photoLink = c['link'].filter(function (link) { >>> return link.rel == ' >>> http://schemas.google.com/contacts/2008/rel#photo' && >>> 'gd$etag' in link; >>> })[0]; >>> if(photoLink) { >>> r.picture = '/users/photo?l=' + >>> encodeURIComponent(photoLink.href); >>> } else if (r.email) { >>> r.picture = gravatar.url(r.email, { >>> s: 40, >>> d: " >>> https://ssl.gstatic.com/s2/profiles/images/silhouette80.png"}); >>> } >>> } >>> return r; >>> }).filter(function (u) { >>> return !!u.email && //we can only give access >>> to persons with email at this point >>> !~u.email.indexOf('@reply.'); //adress with @reply. >>> are usually temporary reply address for forum kind of websites. >>> }); >>> >>> res.json(users); >>> }); >>> } >>> >>> > > authorize: function(req, res){ > var CLIENT_ID = ' > 927112080821-vhsphqc79tb5ohfgpuvrp8uhh357mhad.apps.googleusercontent.com'; > var CLIENT_SECRET = 'gdgofL0RfAXX0in5JEiQiPW8'; > var SCOPE = 'https://www.google.com/m8/feeds'; > oa = new oauth.OAuth2(CLIENT_ID, > CLIENT_SECRET, > "https://accounts.google.com/o", > "/oauth2/auth", > "/oauth2/token"); > res.redirect(oa.getAuthorizeUrl({scope:SCOPE, response_type:'code', > redirect_uri:'http://localhost:1234/callback'})); > }, > callback: function(req, res){ > console.log(req.query.code); > oa.getOAuthAccessToken(req.query.code, > {grant_type:'authorization_code', redirect_uri:' > http://localhost:1234/callback'}, function(err, access_token, > refresh_token) { > if (err) { > res.end('error: ' + JSON.stringify(err)); > } else { > console.log('before google api'); > getContactsFromGoogleApi(access_token); > > //res.write('access token: ' + access_token + '\n'); > //res.write('refresh token: ' + refresh_token); > //res.end(); > } > }); > > -- > -- > Job Board: http://jobs.nodejs.org/ > Posting guidelines: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > You received this message because you are subscribed to the Google > Groups "nodejs" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/nodejs?hl=en?hl=en > > --- > You received this message because you are subscribed to the Google Groups > "nodejs" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
