最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

无法从 req.cookies 或 req.body 或 req.query 获取值

网站源码admin37浏览0评论

无法从 req.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}`);
});


回答如下:
发布评论

评论列表(0)

  1. 暂无评论