cookies 或 req.body 或 req.query 获取值"/>
无法从 req.cookies 或 req.body 或 req.query 获取值
我正在尝试实施 Spotify 身份验证工作流程。我希望任何人都能登录到我的网络应用程序,所以我要求用户提供他们的信用,而不是将我的信用存储在
.env
文件中。
我创建了以下API
router.post("/login", (req, res) => {
console.log('Request body:', req.body);
const clientId = req.body.clientId;
const clientSecret = req.body.clientSecret;
const redirectLink = 'http://localhost:5000/callback';
const AUTHORIZE = '';
res.cookie("clientId", clientId);
res.cookie("clientSecret", clientSecret);
let url = AUTHORIZE;
url += '?client_id=' + clientId;
url += '&response_type=code';
url += "&redirect_uri=" + encodeURIComponent(redirectLink);
url += "&show_dialog=true";
url += "&scope=user-read-private user-read-email user-top-read user-modify-playback-state user-read-playback-position user-library-read streaming user-read-playback-state user-read-recently-played playlist-read-private";
res.redirect(url);
});
router.get("/callback", async (req, res) => {
const { code } = req.query;
const clientId = req.cookies.clientId;
const clientSecret = req.cookies.clientSecret;
const redirectUri = 'http://localhost:5000/callback';
console.log('Code:', code);
console.log('/callback', clientId);
try {
const accessToken = await spotify.getAccessToken(clientId, clientSecret, code, redirectUri);
global.spotify_access_token = accessToken;
res.redirect('/homePage');
} catch (error) {
res.status(500).send("Something went wrong");
}
});
我有以下日志语句:
Request body: {
clientId: 'clientId',
clientSecret: 'clientSecret'
}
Code: 'code'
/callback undefined
Error getting access token: { error: 'invalid_client', error_description: 'Invalid client' }
方法二:
router.get("/callback", async (req, res) => {
const { code } = req.query;
const clientId = req.body.clientId;
const clientSecret = req.body.clientSecret; //Using req.body here instead of .cookies
const redirectUri = 'http://localhost:5000/callback';
console.log('Code:', code);
console.log('/callback', clientId);
try {
const accessToken = await spotify.getAccessToken(clientId, clientSecret, code, redirectUri);
global.spotify_access_token = accessToken;
res.redirect('/homePage');
} catch (error) {
res.status(500).send("Something went wrong");
}
});
方法三:
router.get("/callback", async (req, res) => {
const { code, clientId, clientSecret } = req.query;
const redirectUri = 'http://localhost:5000/callback';
console.log(code);
console.log('/callback', clientId);
try {
const accessToken = await spotify.getAccessToken(clientId, clientSecret, code, redirectUri);
global.spotify_access_token = accessToken;
res.redirect('/homePage');
} catch (error) {
res.status(500).send("Something went wrong");
}
});
但是我遇到了同样的错误。我怎样才能解决这个问题? 谢谢你!
我的服务器.js
const express = require('express');
const app = express();
const router = require('./router/htmlRoutes');
const path = require('path');
const cors = require("cors");
const cookieParser = require('cookie-parser');
app.use(cors())
app.use(express.json());
app.use(cookieParser());
app.use(express.urlencoded({ extended: true }));
const PORT = process.env.PORT || 5000;
const publicPath = '../client/src/public';
const pagesPath = '../client/src/pages';
// Use the router module
app.use('/', router);
app.use(express.static(path.join(__dirname, publicPath)));
app.use(express.static(path.join(__dirname, pagesPath)));
// Start the server
app.listen(PORT, () => {
console.log(`Server started on port ${PORT}`);
});
回答如下:
更多推荐
无法从 req.cookies 或 req.body 或 req.query 获取值
发布评论