私は Google Apps for Education の研究責任者であり、学校の管理者でもあります。
ガス サービスを使用して、多くのアプリケーション (欠勤の管理、電子メールの送信、自動レポート、ScriptDb データベースなど) に Google Apps Script を使用しました。すごいね。
基本的に、生徒の Google ドライブ内にフォルダー構造 (学年、コース、教師など) を作成する必要があります。
Google Apps Script サービスを使用すると、簡単に実行できますが、フォルダは作成者 (管理者) に属し、ユーザーは管理者のストレージ クォータを消費すると思います。これは私には興味がありません。(はい、ユーザーが実行するアプリケーションを作成し、その構造を Google ドライブに作成することはできますが、自動化された方法で介入なしで行うことをお勧めします)
Google ドライブでこのドキュメント (およびフォルダ) を作成するために、ユーザー (教師、学生など) は、この応答で Waqar Ahmad によって提供されたコードを適応させました [スプレッドシートにライターを追加 ... ]
これにより、他のユーザーのドキュメントを取得して、Google Document List API (ドメインのユーザーになりすますための Google Apps 管理アクセス) を使用して更新を行うことができ、他の Google ドライブ ユーザーにフォルダーやファイルを作成することもできます。それは完全に機能します。ここで言及します:
しかし現在、Google Documents List AP のバージョン 3 は公式に廃止されており、Google API Drive を使用することが奨励されています。
この新しい Google API で同じことをしようとしました。誰かがこれを行うことができましたか?出来ますか?どこから始めたらいいのかわからない!
ありがとうございました。
セルジ
更新しました:
これは私が作業しているコードですが、「無効なリクエスト」エラーが発生します:
(...)
var user = e.parameter.TB_email // I get user from a TextBox
//https://developers.google.com/accounts/docs/OAuth2ServiceAccount
//{Base64url encoded header}.{Base64url encoded claim set}.{Base64url encoded signature}
//{Base64url encoded header}
var header = '{"alg":"RS256","typ":"JWT"}'
var header_b64e = Utilities.base64Encode(header)
//{Base64url encoded claim set}
var t_ara = Math.round((new Date().getTime())/1000) // now
var t_fins = t_ara + 3600 // t + 3600 sec
var claim_set = '{"iss":"1111111111-xxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com",'+
'"prn":"' + user + '",' +
'"scope":"https://www.googleapis.com/auth/prediction",'+
'"aud":"https://accounts.google.com/o/oauth2/token",'+
'"exp":'+t_fins+','+
'"iat":'+t_ara+'}'
// where '1111111111-xxxxxxxxxxx... is my CLIENT-ID (API Access -> Service Account)
var claim_set_b64e = Utilities.base64Encode(claim_set)
claim_set_b64e = claim_set_b64e.replace(/=/g,'')
var to_sign = header_b64e + '.' + claim_set_b64e
// [signature bytes] ??? // password 'isnotasecret???'
var key_secret = DocsList.getFileById('0Biiiiiiiiii-XXXXXXXXXXX').getBlob().getBytes()
// where '0Biiiiiiiiii-XXXXXXXXXXX'... is my p12 file (key_secret) uploaded to GDRive
// I don't know if this is correct !!!
var sign = Utilities.base64Encode(Utilities.computeHmacSha256Signature(to_sign, key_secret))
var JWT_signed = to_sign + '.' + sign
JWT_signed = JWT_signed.replace(/=/g,'')
// Token Request /////////////////////////////////////////////////////////////
var url = 'https://accounts.google.com/o/oauth2/token'
//var url = 'https%3A%2F%2Faccounts.google.com%2Fo%2Foauth2%2Ftoken' ???
//var url = 'https:' + '%2F%2Faccounts.google.com%2Fo%2Foauth2%2Ftoken' ???
var parameters = {
"method" : "POST",
"payload" : '"' + 'grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=' + JWT_signed + '"',
"contentType" : "application/x-www-form-urlencoded"
}
var content = UrlFetchApp.fetch(url,parameters) //.getContentText()
// Token Request end ////////////////////////////////////////////////////////
そして、トークンを含むJSONではなく、「無効なリクエスト」を取得します
最初の 2 つのパーツ (ヘッダーとクレーム セット) は OK です。結果は、Google OAuth ページの結果と同じです。
署名部分が正しいのか、エラーがトークンリクエストにあるのかわかりません。