0

現在、Google ドライブで何かが発生したときに通知を受け取るために、Admin SDKのGoogle Reports APIを使用して C# asp.net mvc Web アプリに取り組んでいます。

次に、さらにドライブ REST API GET リクエストdoc_idを使用して、Reports API で指定されたを使用してファイル パス (およびその他) を作成する必要があります。


Report API が別のユーザーの非共有ファイルで通知する場合を除いて、すべて正常に動作しています。Drive REST API がファイルを見つけようとしていますが、成功していません。

返されるエラー 404 は次のとおりです。

Google.Apis.Requests.RequestError
File not found: 0B48ytfDI5h8qY2k4VzdjMkZRNXM [404]
Errors [
    Message[File not found: 0B48ytfDI5h8qY2k4VzdjMkZRNXM] Location[file - other] Reason[notFound] Domain[global]
] 

私はこのスコープを使用しています:DriveService.Scope.Drive

ファイルの所有者は、このフォームを使用してファイルのメタデータを表示できますが、まだエラー 404 が表示されます。

私はドライブ管理者であり、Google Apps 管理者設定で、ドメインの全員のデフォルト共有リンクを使用しても、さまざまな構成を試しましたが成功しませんでした。


だから私の質問は: ファイルの所有者ではなく、ファイルが共有されていない場合、ファイルのメタデータを取得することは可能ですか?

PS:私は自分の仕事用ドメインに関連して Google Apps for work unlimited を使用しているため、ファイルが共有されていなくても、少なくとも管理者としてメタデータ ファイルを取得できると考えました。

4

1 に答える 1

1

私の知る限り、Drive API でユーザーのファイルにアクセスする唯一の方法は、Web アプリケーションのサービス アカウントを設定することです。これについては、ドライブ API ドキュメントのDomain-Wide Delegationで詳しく読むことができます。

簡単な要約を与えるには:

サービス アカウントは、個々のエンド ユーザーではなく、アプリケーションに属するアカウントです。これにより、アプリケーションはドメイン内のユーザーとして API 呼び出しを行う権限を持つことができます (また、ユーザーを「偽装」することもできます)。

開始するには、次のタスクを実行する必要があります。

  1. Google Developers コンソールでプロジェクトを作成または選択し、API (例: Drive API) を有効にします。
  2. 資格情報に移動し、新しい資格情報を追加して、サービス アカウントを選択します。詳細はこちら
  3. これにより、3 つの項目 (クライアント ID、秘密鍵ファイル、メール アドレス) が作成されます。これらは、Google Apps ドメインの管理コンソールでアプリケーションを承認するために必要です。

ここで、作成したサービス アカウントに、アクセスしたい Google Apps ドメインのユーザー データへのアクセスを許可する必要があります。これには、管理者が管理コンソールでサービス アカウントを承認する必要があります。ドキュメントで既に提供されているため、ドキュメントの適切な手順にアクセスできます。

これで、アプリケーションは、Google Apps ドメインのユーザーに代わって、承認されたドライブ サービス オブジェクト (つまり、メタデータ)をインスタンス化できます。これが役に立てば幸いです。幸運を祈ります!

于 2015-10-21T21:01:19.403 に答える