2

ファイルの所有権をスーパー管理者に譲渡しようとしています。コードの重要な部分を以下に示します。私が所有するドキュメントの所有権を譲渡する場合、同じコードが機能します。ただし、この場合、元の所有者は同じドメイン内の別のユーザーです。[編集]管理パネルに「1 人のユーザーから別のユーザーへのファイルの所有権の譲渡」があることは知っていますが、これは、複数の所有者から複数のファイル/フォルダーを転送する必要がある場合に必要です。プログラムで転送されます。[/編集]

したがって、単純なシナリオは次のとおりです。

  1. user@domain.comはファイルを所有しています
  2. 所有権をadmin@domain.com (スーパー管理者)に譲渡する必要があります。コードは Java サーブレットの AppEngine で実行されています。また、スーパー管理者は OAuth で認証されます。

ただし、常に(500 OK)例外がスローされますupdate.execute();(最後に表示されます)。この操作はスーパー管理者でもできないのでしょうか?

ヒントをありがとう!

try {
   Drive service = getDriveService();
   Permission newPerm = new Permission();
   newPerm.setValue("admin@domain.com");
   newPerm.setType("user");
   newPerm.setRole("writer");
   newPerm = service.permissions().insert(fileId, newPerm).execute();
   newPerm.setRole("owner");
   Update update = service.permissions().update(fileId, newPerm.getId(), newPerm);
   update.setTransferOwnership(true);
   update.execute(); 
} catch (IOException e) {
   e.printStackTrace();
   log.severe(e.getMessage());
}

スローされる例外は次のようになります。

SEVERE: 500 OK
{
  "code" : 500,
  "errors" : [ {
    "domain" : "global",
    "message" : "Internal Error",
    "reason" : "internalError"
  } ],
  "message" : "Internal Error"
}
4

2 に答える 2

1

私はついにこれを少なくとも部分的に機能させました。「なりすまし」のヒントをありがとう@ZigMandel!今、私はこのドメイン全体の権限委譲に注意深く従いました。そして、GoogleCredential「サービス アカウント」キーを使用して作成されたキーを使用しました。この資格情報を使用して、たとえば、アクセス許可の追加や管理者への所有権の譲渡など、Drive API 操作を偽装できます。

まだ残っている問題は、現在の Drive API では、偽装された資格情報の作成に必要な所有者の電子メール アドレスをプログラムで特定できないことです。今、私はこれに対する回避策を見つける必要があります。とにかく、基本的なアイデアは現在機能しています。ありがとう!

于 2013-08-13T09:52:28.497 に答える
0

アプリスクリプトからはできません。appengine から実行できます。私はそれをやったが、ここで説明する範囲を超えている. ファイル所有者に代わってドライブ API を使用し、ドメイン レベルで oauth 権限を追加する必要があります。

于 2013-08-08T22:27:08.627 に答える