初学者node.js app使用护照+ googleapis

时间:2013-09-04 00:16:22

标签: node.js google-api passport.js

我正在使用Node.js尝试使用Google图书API和护照制作图书馆应用程序,并使用Google策略进行身份验证。到目前为止,我可以验证和访问API。现在也许是一个愚蠢的问题,如何在我的集合视图中恢复使用数据?我可以在身份验证后访问Google数据,然后我需要重定向到该集合,但如何将该数据构建到我的新视图中?

app.get('/auth/google', passport.authenticate('google', {
  scope: ['https://www.googleapis.com/auth/books', 'https://www.googleapis.com/auth/userinfo.profile']
}));

app.get('/auth/google/callback', passport.authenticate('google', {failureRedirect: '/'}), function (req, res) {
  // Successful authentication, get data and redirect to user collection
  googleapis.discover('books', 'v1').execute(function (err, client) {
    oath2Client.credentials = {
      access_token: req.user.accessToken,
      refresh_token: req.user.refreshToken
    };
    var req1 = client.books.mylibrary.bookshelves.list().withAuthClient(oath2Client);
    req1.execute(function (err, bookshelves) {});
  });
  res.redirect('/collection');
});

app.get('/collection', routes.collection, function (req, res) {});

1 个答案:

答案 0 :(得分:1)

你可以做的是你可以将数据存储在会话变量中,然后从另一个路径获取它。这是一个存储字符串并从另一个页面访问它的示例:

//enable session support
app.use(express.cookieParser());
app.use(express.session({
  secret: 'secret key for signed cookies'
}));

app.get('/foo', function(req, res) {
  req.session.property = 'property value';
  res.redirect('/bar');
});

app.get('/bar', function(req, res) {
  //the session variables can be accessed here too
  res.send(req.session.property);
});