oauth2Client.getToken缺lessrefresh_token

我有一个小型快递服务器,有两个路线。 然后它将json标记写入一个文件(我知道非常不安全)。 出于某种原因,没有refresh_token 。 在文档中,对于access_type offline的评论获取了已设置的refresh_token ,但仍然不起作用

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

这里是快递服务器,对不起,如果承诺抛出任何人。

 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函数只会在第一次返回(因为你应该存储它)。 新增了approval_prompt: "force"generateAuthUrl选项,我可以每次都得到它。