私は、顧客が個人の Google ドライブのファイルを私たちのビジネス アプリケーションに同期できるようにする Web アプリを作成しています。(限られたファイルタイプのみ)。
だから - これまでのところ何がうまくいくのですか:
- ユーザーはアプリにサインアップし (OAuth2 を使用して最後に refreshtoken を保存します)、ユーザーとアプリはドライブ上のファイルにアクセスできるようになり、ファイル転送を手動で呼び出すことができます。
正常に動作しています。
ユーザーは後で再度ログインし、アプリを再度認証することなくこれを繰り返すことができます。罰金。
並行して、アプリのユーザーベースをループし、指定されたフォルダー内のファイルを自動的に同期する、ある種の「サービス」が必要です。たとえば、10 分ごとです。
OAuth2モデルが原因で問題が発生し、すべてのユーザーを認証するためにリダイレクトする必要があります。しかし、「/SyncAllUsers」などの単一のリクエストから複数のリダイレクトを作成することはできません。また、1 人のユーザーのみでテストする場合、ユーザーは引き続きブラウザー セッションにログインする必要があります。そうしないと、Google がサービス ログイン ページにリダイレクトされます。
(私たちは chron-job を使用して、指定された間隔でこれらのメソッドを呼び出します。これはドロップボックス アカウントでうまく機能しており、これらのユーザーも OAuth を使用しています)
基本的に2つの質問:
- ユーザーが「ログイン」することなく、既に承認されているアプリを使用して、ユーザーのドライブ アカウントにアクセスするにはどうすればよいですか
- また、すべてのユーザーにリダイレクトすることなく、同期サービスを実行するにはどうすればよいですか。
https://developers.google.com/drive/とここで答えを探すのに何日も費やしました。私はimplを持っています。ここからの OAuth コードhttps://developers.google.com/drive/credentials#retrieve_oauth_20_credentials を変更して、独自のユーザー データベースを使用するようにしました。
参考までに、Google API コンソールで Web アプリケーションのクライアント ID を使用しています。