Google apps script 应用程序脚本抛出';无效的状态令牌';在同意屏幕上自动化后
我希望授权我的webapp在用户的appfolder中创建一个文件夹以保存应用程序的数据文件 为此,我需要请求范围Google apps script 应用程序脚本抛出';无效的状态令牌';在同意屏幕上自动化后,google-apps-script,oauth-2.0,google-drive-api,Google Apps Script,Oauth 2.0,Google Drive Api,我希望授权我的webapp在用户的appfolder中创建一个文件夹以保存应用程序的数据文件 为此,我需要请求范围https://www.googleapis.com/auth/drive.appfolder 到目前为止,我有以下代码: var CLIENT_ID = '3941...'; var CLIENT_SECRET = 'DY_P...'; var SCRIPT_ID = '1XAF...'; var appfolder_sc
https://www.googleapis.com/auth/drive.appfolder
到目前为止,我有以下代码:
var CLIENT_ID = '3941...';
var CLIENT_SECRET = 'DY_P...';
var SCRIPT_ID = '1XAF...';
var appfolder_scope = 'https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.appfolder';
var redirectURI = 'https%3A%2F%2Fscript.google.com%2Fmacros%2Fd%2F'+ SCRIPT_ID + '%2Fusercallback';
var AuthEndpoint = 'https://accounts.google.com/o/oauth2/v2/auth';
function getCallbackURL(callbackFunction) {
var url = ScriptApp.getService().getUrl(); // Ends in /exec (for a web app)
url = url.slice(0, -4) + 'usercallback?state='; // Change /exec to /usercallback
var stateToken = ScriptApp.newStateToken()
.withMethod(callbackFunction)
.withTimeout(120)
.createToken();
return url + stateToken;
}
function generateAuthRequestURL() {
var AuthRequest = AuthEndpoint;
var Query = '?'
+ 'scope=profile%20' + appfolder_scope
+ '&state=' + getCallbackURL(cb)
+ '&redirect_uri=' + redirectURI
+ '&response_type=code'
+ '&client_id=' + CLIENT_ID
//+ '&login_hint=...%40gmail.com'
;
AuthRequest += Query;
Logger.log(AuthRequest);
return AuthRequest;
}
function cb(response) {
Logger.log(response);
}
当我单击由generateAuthRequestURL()
生成的url时,它会将我带到同意屏幕,在那里我单击允许。但每次我得到“状态令牌无效或已过期”
webapp已经发布,我已经测试了exec和dev版本,结果相同。我还尝试了登录提示和不登录提示
我也尝试过同样的方法。第一个无法使用,第二个甚至不知道如何使用。基于此,请确保已将项目密钥放入相关字段。在制作脚本副本后更改密钥时,可能会发生此错误
您还可以检查这一点,以确保您使用的是正确的项目密钥
以下是一些相关论坛,可能也会有所帮助: