我已经从Google OAuth2重定向了URL,
http://localhost:997/?#state=pass-through%20value&access_token=ya29.ImC6B1g9LYsf5siso8n_UphOFB0SXc5dqsm6LqHRWXbtNHisEblxjeLoYtGgwSVtCTGxOjjODiuTyH7VCHoZCEfUd_&token_type=Bearer&expires_in=3599&scope=https://www.googleapis.com/auth/youtube.readonly

我想从中获取access_token时出现问题。

var express = require('express'),
  app = express(),
  port = process.env.PORT || 997;

app.get("/", (req, res, next) => {
    console.log(req.query);
    res.send("hi");
});

app.get("/url", (req, res, next) => {
    res.json('test');
});

app.listen(port, ()=>{
  console.log("Server on port: " + port);
});


现场后的输出:

`[nodemon] starting `node main.js`
Server on port: 997
{}


删除#state=pass-through%20value后,链接看起来像http://localhost:997/?&access_token=ya29.Il-6B4zOwiM7bLeWcyJX9iQGuj3lCGU-6lbnJWdxqcPkBCMkUf8P2xxwMUrFjI-mNNT-X8QEBxA18p1IXsGS5wjiscVMv&token_type=Bearer&expires_in=3599&scope=https://www.googleapis.com/auth/youtube.readonly,可以正常工作,并且输出是corect。有人知道我在做什么错吗?

最佳答案

从您的请求中删除#。因为在#之后,不会标出网址。 #符号通常用于表示特定的DOM element id

您的URL应该像

http://localhost:997/?state=pass-through%20value&access_token=ya29.ImC6B1g9LYsf5siso8n_UphOFB0SXc5dqsm6LqHRWXbtNHisEblxjeLoYtGgwSVtCTGxOjjODiuTyH7VCHoZCEfUd_&token_type=Bearer&expires_in=3599&scope=https://www.googleapis.com/auth/youtube.readonly

另请参阅此QA



如果要使用#传递Dom element id,则应在url的末尾使用它

?param=sasad&param2=adsasa#my_element

如果#是参数的一部分,则应将其编码为%23。或应该在请求后的正文中发送它

07-24 09:50
查看更多