【发布时间】:2017-03-28 20:13:01
【问题描述】:
在花了将近一周的时间尝试为 google 令牌实施护照策略失败后,我决定使用 Nodejs 客户端库为 Google API 自己编写它。我在 $http 请求中从 angularjs 传递访问令牌,并希望在服务器端进行身份验证后将登录用户返回到调用。 我无法将登录用户传递给 req 对象,因此我可以将其传递给下一个中间件。任何帮助将不胜感激。
**express code**
路由器
var gCtrl = require('./googleController.js');
app.post('/auth/google/accesstoken',
function (req, res) {
console.log('Im in the google auth middleware');
//below line is not returning the gUser so I can pass it to the next middleware
var gUser=gCtrl(req.token);
res.send(gUser);
},
function(req,res){
//do something with authenticated user
}
);
调用 Google API 的 gCtrl 模块
var ubCust = require('../models/ubCust.js');
var bodyParser = require('body-parser');
var google=require('googleapis');
var plus = google.plus('v1');
var OAuth2 = google.auth.OAuth2;
var oauth2client = new OAuth2('1094664898379-8u0muh9eme8nnvp95dafuc3rvigu4j9u.apps.googleusercontent.com','KQ_vNDaZzTvXDdsfgp5jqeZW','http://localhost:3000/auth/google/callback');
module.exports = function(acc_token){
//console.log(acc_token);
oauth2client.setCredentials({
access_token : acc_token
//refresh_token: token.refresh_token
});
plus.people.get({
userId:'me',
auth:oauth2client
},function(err,response){
if (err)
throw err;
//console.log('google user',response);
return response;
});
};
【问题讨论】:
-
req.token 有值吗?