私のwebappに、アプリケーションのデータファイルを保持するためのフォルダをユーザのアプリケーションフォルダに作成する権限を与えたいとします。私はそれが同意に私を取るgenerateAuthRequestURL()
によって生成されたURLをクリックして同意画面で自動化の後、Appsスクリプトが「無効な状態トークン」をスローする
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);
}
:これを行うには
は、私がこれまでのところ、私は次のコードを持っている範囲にhttps://www.googleapis.com/auth/drive.appfolder
を要求する必要がありますここで私は許可をクリックします。しかし、その都度、「状態トークンが無効であるか、期限が切れている」というメッセージが表示されます。
webappが公開されており、私はexecとdevの両方のバージョンを同じ結果でテストしました。私はlogin_hintの有無にかかわらず試しました。
Apps-Script-Folder-Libraryとgdrive-appdataも実験しました。私は仕事に最初のものを得ることができませんでした、そして、私は使い方を知らないもう1つです。