gpt4 book ai didi

javascript - oauth2Client.getToken 缺少 refresh_token

转载 作者:数据小太阳 更新时间:2023-10-29 05:52:05 25 4
gpt4 key购买 nike

我有一个有两条路由的小型 express 服务器。然后它将 json token 写入文件(我知道非常不安全)。由于某种原因,没有 refresh_token。在文档中有一条评论说 offline for access_type gets refresh_token,它已设置但仍然无法正常工作

access_type: 'offline', // 'online' (default) or 'offline' (gets refresh_token)

这是快速服务器,如果 promise 让任何人失望,我们深表歉意。

var Promise = require("bluebird")
var express = require('express')
var app = express()

var google = require('googleapis')
var OAuth2 = google.auth.OAuth2
var clientSecrets = require("./client_secrets.json")
var oauth2Client = new OAuth2(clientSecrets.web.client_id, clientSecrets.web.client_secret, clientSecrets.web.redirect_uris[0]);
oauth2Client.getToken = Promise.promisify(oauth2Client.getToken)

var fs = Promise.promisifyAll(require("fs"))

app.get('/google', function (req, res) {
var url = oauth2Client.generateAuthUrl({
access_type: 'offline',
scope: "https://www.googleapis.com/auth/drive"
})
return res.redirect(url)
})

app.get('/oauth2callback', function (req, res) {
return oauth2Client.getToken(req.query.code).then(function(tokens){
fs.writeFileAsync("./tokens.json", JSON.stringify(tokens), "utf8");
return res.json(tokens)
}).catch(function(err){
return res.redirect("/google")
})
})

var server = app.listen(3000, function () {})

最佳答案

refresh_token 仅在用户最初使用他们的帐户授权您的应用程序时发送。所以 getToken 函数只在第一次返回它(因为你应该存储它)。在generateAuthUrl选项中添加了approval_prompt: "force",我每次都能获取到。

关于javascript - oauth2Client.getToken 缺少 refresh_token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28564758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com