質問: GoogleカレンダーでOAuthを使用して1つのカレンダーにのみアクセスするにはどうすればよいですか? 私は顧客のためのWebアプリケーションを構築しています。私は正しいことをやっているとは本当にわかりません... 基本的には、Googleでカレンダーを読み取り、編集、削除するPHPアプリケーションを作成し、自分のWebアプリケーションDBにコピーを保存しています(さまざまな理由で)。今、私はOAuth 2.0について読んで、クライアントの一般的なGoogleのパスワード(すべてのGoogleサービス(カレンダー、電子メールなど)にアクセスする)をWebアプリケーションのPHPファイルに直接格納するよりも安全ですハッカーがサーバーに侵入した場合、パスワードを盗むことができます...)。 OAuth 2.0アカウントを作成し、このページの `http://code.google.com/apis/calendar/v3/using.html#setup` からクラス/フォルダを追加し、適切なスクリプトを追加しました「あなたの情報へのアクセスを許可する」`(同じページの「クライアントをインスタンス化する」を参照)のテストページ` ... ここに私の質問があります:自分のログイン情報(私のクライアントではない)で私のGmailにログインし、私のテストページに行くと、私はGoogleカレンダーへのアクセスを許可するようMEに頼みます。しかし、私は私のクライアントのカレンダーを必要とします。だから私はログアウトし、顧客情報でログインしてテストページに行きましょう。完璧です。アカウントを承認してから、私は自分のアプリにリダイレクトされ、そこで私は彼女のカレンダーを見ることができます。 しかし、これは実用的でない論理的なものではありません。例えば、私は彼女の一般公衆サイトの人々がページに行き、彼女の予定を自動化するためにフォームを記入したいからです。スクリプトは自分のGoogleカレンダーをチェックして、そのGmailアカウントの許可を求める必要がありますか?いいえ、私は彼女のカレンダーが欲しいです。 これは私の問題/質問です。私は間違って何をしていますか?これはそうする正しい方法ですか、私は一歩を逃しましたか?このAPIはこれを行うためのものでしたか? 上記の方法でAPIを使用するにはどうしたらよいですか? すべて私のキャンドルを軽くするためにありがとう ジョエル
回答: 私があなたを正しく理解しているなら、あなたは認証の権利を持っています。問題は、ログインしているユーザーのカレンダーを表示したくないことです。クライアントのカレンダーを表示したいとします。 ユーザーは、次の2つの状況のいずれかでカレンダーに書き込むことができます。 1. ユーザーがカレンダーを所有しているか 2. 所有者は、ユーザーの電子メールアドレスを指定して、明示的にユーザーに書き込みアクセス権を与えました。 明らかに、第2の状況は拡大縮小しない。どちらの場合でも、クライアントの資格情報をアプリケーションに埋め込み、認証されたユーザーの代わりに予定を作成するか、カレンダーをユーザーと共有する必要があります。もちろん、あなたのクライアントの資格情報を暗号化したいと思うでしょう - 単にあなたのアプリでそれらをハードコードしないでください! クライアントの「本当の」アカウントを使用するのではなく、このカレンダー専用の新しいアカウント(固有の電子メールアドレスとパスワードを使用)を作成する方が安全です。あなたのクライアントは、お客様のアプリケーションとしてアプリケーションにアクセスしたり、カレンダーを彼女と共有したり、書き込みアクセス権を与えることができます。 別の可能性は、カレンダーをユーザーに読み取り専用にすることで、クライアントの予定表に直接*作成*することを許可するのではなく、*リクエスト* :ユーザーのカレンダーにイベントを作成し、クライアントのカレンダーに招待状を送信します。それで、あなたのアプリは埋め込み資格情報を必要としません。また、クライアントに、各予定を確認または却下し、自動的にユーザーに返信する機会を与えます。もう1つの利点は、各ユーザーの予定が自分の個人用Googleカレンダーに表示されることです。 私はあなた(または他の誰か)がより良い解決策を見つけたかどうかを知ることに興味があります。