我已经从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¶m2=adsasa#my_element
如果#
是参数的一部分,则应将其编码为%23
。或应该在请求后的正文中发送它