Не могу создать сеанс сервера в мобильных запросах.
Я занимаюсь разработкой мобильного приложения.Войдите в LinkedIn, чтобы приложение делалось только с мобильного.
Я написал остальные API с помощью nodejs.Я использовал паспорт для регистрации логина. Затем я проверил его в браузере. В браузере он работал гладко.
Когда я делаю запрос к моей конечной точке (/ auth / linkedin), он перенаправляет на linkedin и вводит данные моей учетной записи и разрешает приложению. Он снова перенаправляется на конечную точку обратного вызова (auth / linkedin / callback).Я возвращаю информацию о вошедшем в систему пользователе при успешном входе в систему.Я делаю обработку этой сессии информации по следующим запросам.
Но когда я захожу с мобильного, информация пользователя распечатывается через веб-просмотр, и я не могу создать сеанс. Как я могу решить эту проблему.Что я делаю не так?
Я младший.если вы видите мой код неверно, пожалуйста, укажите для улучшения моего навыка.
app.js
const AuthController = require("./router/Auth");
app.use(express.json());
app.use(session({
secret:'secretkey',
saveUninitialized: false,
resave: true,
cookie: {maxAge: 365*24*60*60*1000}
}));
app.use(passport.initialize());
app.use(passport.session());
app.use('/auth',AuthController);
passport.use(new LinkedInStrategy({
clientID: config.linkedin.clientID,
clientSecret: config.linkedin.clientSecret,
callbackURL: config.baseUrl[env] + "/auth/linkedin/callback",
scope: config.linkedin.scope
},
function(accessToken, refreshToken, profile, done) {
User.findOne({'linkedin.id' : profile.id}, function(err, user) {
if (err) return done(err);
if (user) return done(null, user);
else {
// if there is no user found with that linkedin id, create them
var newUser = new User();
// set all of the linkedin information in our user model
newUser.linkedin.id = profile.id;
newUser.linkedin.token = accessToken;
newUser.name = profile.displayName;
if (typeof profile.emails != 'undefined' && profile.emails.length > 0)
newUser.email = profile.emails[0].value;
if(typeof profile.photos != 'undefined' && profile.photos.length> 0)
newUser.photo = profile.photos[0]
// save our user to the database
newUser.save()
.then(createWallet)
.then(updateWallet)
.then(user => {
return done(null,user)
})
.catch(err =>{
throw err;
});
}
});
}
));
passport.serializeUser(function(user, done){
done(null, user.id)
})
passport.deserializeUser(function(id, done) {
User.getUserById(id, function(err, user) {
done(err, user);
});
});
app.listen(PORT,()=>{
console.log("Listening...",PORT);
});
function createWallet (user){
const userId = user.id;
return new Promise((resolve,reject) => {
request(config.blockChain['url']+'/?type=register&userID='+userId,{json:true} ,(err,res,body)=>{
if(err) reject(err);
user.wallet = {
"secret":body.secret,
"publicKey":body.publicKey
}
resolve(user);
})
}
)
}
function updateWallet(user){
return user.save();
}
Auth.js
router.get('/linkedin', passport.authenticate('linkedin'));
router.get('/linkedin/callback',
passport.authenticate('linkedin',{ failureRedirect: '/'}),(req,res)=>{
const user = req.user;
response = {
status:true,
msg:"Login is successfull",
data: user
}
res.status(200).json(response);
});