Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 我可以在NodeJS中使用oauth2构建我的项目吗_Node.js_Express_Oauth_Oauth 2.0_Oauth2orize - Fatal编程技术网

Node.js 我可以在NodeJS中使用oauth2构建我的项目吗

Node.js 我可以在NodeJS中使用oauth2构建我的项目吗,node.js,express,oauth,oauth-2.0,oauth2orize,Node.js,Express,Oauth,Oauth 2.0,Oauth2orize,我想在我的项目中将oauth2授权和资源服务器与NodeJ一起使用。但我不能这样做。我曾多次尝试使用oauth2orize、express-oauth-server、oauth2-serverlibs构建oauth2服务器,但都不起作用。请帮助我用oauth2构建我的项目参见我的博客 基于NodeJS+教程-带有代码示例和编写 你可以给我发问 但是非常详细-可能会让你的大脑受伤 您可以使用passportjs为您提供oauth 2.0支持。您将需要googleClientID和googleCli

我想在我的项目中将oauth2授权和资源服务器与NodeJ一起使用。但我不能这样做。我曾多次尝试使用oauth2orize、express-oauth-server、oauth2-serverlibs构建oauth2服务器,但都不起作用。请帮助我用oauth2构建我的项目参见我的博客

基于NodeJS+教程-带有代码示例和编写

你可以给我发问


但是非常详细-可能会让你的大脑受伤

您可以使用passportjs为您提供oauth 2.0支持。您将需要googleClientID和googleClientSecret。你可以在谷歌开发者网站上注册你的应用程序

var GoogleStrategy = require('passport-google-oauth20').Strategy;

 const mongoose = require('mongoose');
 const keys = require('./keys');
 const User = mongoose.model('users');

module.exports = function(passport){
  passport.use(
new GoogleStrategy({
  clientID:keys.googleClientID,
  clientSecret:keys.googleClientSecret,
  callbackURL:'/auth/google/callback',
  proxy:true
},(accessToken,refreshToken,profile,done)=>{
//     console.log(accessToken);
//     console.log(profile);
  const image = profile.photos[0].value.substring(0,profile.photos[0].value.indexOf('?'));

  const newUser = {
    googleID:profile.id,
    firstName:profile.name.givenName,
    lastName :profile.name.familyName,
    email:profile.emails[0].value,
    image:image
  }

  //Check for existing user
  User.findOne({
    googleID:profile.id
  }).then(user=>{
    if(user){
      //Return user
      done(null,user);
    }
    else{
      //Create a new user
      new User(newUser)
      .save()
      .then(user=> done(null,user)); 
    }
  })
 })
)

passport.serializeUser(function(user, done) {
done(null, user.id);
});

passport.deserializeUser(function(id, done) {
 User.findById(id, function(err, user) {
   done(err, user);
     });
   });
 }
Dependencies=“passport”:“^0.4.0”, “passport google oauth”:“^1.0.0”


你的问题基本上是说“我尝试了一些东西,但没有成功”。您必须更明确地说明您到底尝试了什么,以及它以何种方式没有得到预期的结果。我使用了ExpressOAuth服务器我需要使用资源所有者凭据构建oauth2服务器,请仔细阅读,显示一些代码并阅读:感谢您的hepl。但我需要构建自己的自定义oauth2服务器提供程序。例如oauth2服务器nmp lib或express oauth服务器npm lib,我可以使用Passport JS的Passport-oauth2-resource-owner-password npm lib。谁有一个例子,谢谢你。我将向您发送一些问题,虽然这可能会从理论上回答这个问题,在这里包括答案的基本部分,并提供链接以供参考。
This will redirect req. to above code..
const express = require('express');
const router = express.Router();
const passport = require('passport');

 router.get('/google',passport.authenticate('google',{scope:
      ['profile','email']}));

 router.get('/google/callback', 
   passport.authenticate('google', { failureRedirect: '/' }),
   function(req, res) {
   // Successful authentication, redirect home.
   res.redirect('/dashboard');
  });

   router.get('/verify',(req,res)=>{
   if(req.user){
   console.log(req.user);
  }else{
   console.log('Not Auth');
  }
});

router.get('/logout',(req,res)=>{
   req.logout();
   res.redirect('/');
 })
 module.exports = router;