2016-10-27 5 views
1

私の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-Librarygdrive-appdataも実験しました。私は仕事に最初のものを得ることができませんでした、そして、私は使い方を知らないもう1つです。

答えて

0

このthreadから、プロジェクトキーを関連フィールドに入力していることを確認してください。このエラーは、スクリプトのコピーを作成した後にキーが変更された場合に発生する可能性があります。

また、適切なプロジェクトキーを使用していることを確認することをお勧めするissueを確認することもできます。

:ここ

も役立つかもしれないいくつかの関連のフォーラムです

関連する問題