Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js PassportJS给了我代币,但返回了一个未经授权的密码_Node.js_Express_Passport.js_Google Oauth - Fatal编程技术网

Node.js PassportJS给了我代币,但返回了一个未经授权的密码

Node.js PassportJS给了我代币,但返回了一个未经授权的密码,node.js,express,passport.js,google-oauth,Node.js,Express,Passport.js,Google Oauth,我正在为访问GoogleAPIv3的桌面应用程序编写一个Web服务器,为此我需要使用OAuth2.0 Web服务器使用带有passport-google-oauth20策略的PassportJS,它可以工作,因为我收到了访问令牌和刷新令牌 我不打算保留用户数据,也不需要桌面应用程序的cookies。我真正需要的是accessToken和refreshToken,这样用户就不必每次都登录 到目前为止还不错,但在谷歌发送代币后,它不知何故失败了?我敢肯定,发送401计划的不是谷歌,而是我的设置方式

我正在为访问GoogleAPIv3的桌面应用程序编写一个Web服务器,为此我需要使用OAuth2.0

Web服务器使用带有
passport-google-oauth20
策略的PassportJS,它可以工作,因为我收到了访问令牌和刷新令牌

我不打算保留用户数据,也不需要桌面应用程序的cookies。我真正需要的是accessToken和refreshToken,这样用户就不必每次都登录

到目前为止还不错,但在谷歌发送代币后,它不知何故失败了?我敢肯定,发送401计划的不是谷歌,而是我的设置方式

我试过了,但这对我不起作用,因为我需要代币

以下是策略设置:

const passport=require(“passport”);
const GoogleStrategy=require('passport-google-oauth20')。策略;
passport.use(
谷歌新战略(
{
clientID:process.env.CLIENT\u ID,
clientSecret:process.env.CLIENT\u SECRET,
callbackURL:“/oauth/callback”
},
(accessToken,refreshToken,uz,done)=>{
log(“访问令牌:”,访问令牌);
log(“刷新令牌:”,刷新令牌);
完成(空,空)
}
)
);
这是服务器的相关部分

server.get(“/authorized”,(req,res)=>res.send(“登录成功”);
server.get(“/fail”,(req,res)=>res.send(“登录失败”);
server.get(
“/oauth”,
passport.authenticate(“谷歌”{
范围:[”https://www.googleapis.com/auth/drive.file“,“电子邮件”],
accessType:“脱机”,
批准提示:“强制”,
})
);
server.get(
“/oauth/callback”,
passport.authenticate(“谷歌”{
successRedirect:“/authorized”,
failureRedirect:“/fail”,
failureFlash:没错,
没错,
})
);

如果您想亲自查看它,

在您的策略回调中,您需要向经验证的用户提供护照,否则它将认为是一个失败的身份验证尝试。 通过将
done()
更新为以下内容,我可以使您的代码正常工作并重定向到
授权的
路线:

(accessToken,refreshToken,ux,done)=>{
log(“访问令牌:”,访问令牌);
log(“刷新令牌:”,刷新令牌);
已完成(空,41;
}