2

これはまったくばかげた質問のように思えるかもしれませんが、Google のカレンダー API を利用する Web アプリ/サービスの作成を検討しており、ユーザーがログインしていないときにユーザーのカレンダーに書き込む機能があるかどうかを確認する必要がありました。グーグルアカウント。これができるかどうかを説明する明確なドキュメントが見つかりませんでした。ユーザーが私のサイトにサインアップするときに同意する承認プロセスを想像しました。その後、私のアプリはそこにあるGoogleカレンダーに物事を追加できます。これが可能かどうか誰にもわかりますか?もしそうなら、誰かがそれがどのように機能するかを示すリンクで私をつなぐことができますか?

前もって感謝します

4

2 に答える 2

1

あなたの質問への答えはイエスです。オフラインを有効にして、OAuth 2と認証コードフロー(Webサーバーフロー)を使用します。更新トークン(ユーザーが取り消すまで無期限に有効)を保存すると、ユーザーが現在ログインしていない場合でも、イベントをGoogleカレンダーにアップロードできます。

詳細:https ://developers.google.com/accounts/docs/OAuth2WebServer#offline

このメモに対するRyanBoydのクレジット。

于 2012-08-16T22:10:33.810 に答える
1

あなたは「ログイン」について間違っていると考えています。

Web 接続は要求間で維持されないため、すべての Web サイトまたは Web サービスは、すべての要求でAuthorizationヘッダーやCookieヘッダー (使用される認証方法に応じて) などのヘッダーをチェックし、要求をユーザー。

したがって、ログイン* とは、リクエストを行う際に特定のユーザーに関連する詳細を使用するように Web クライアント (ブラウザーなど) が設定されていることを意味します。

API を使用する場合、送信する認証情報は同じ役割を果たします。そのため、ユーザーが API を使用している場合、Web ページまたは他のアプリケーションを介してログインしているかどうかにかかわらず、ユーザーは API を介してログインしています。

例えば:

私の Web ブラウザは現在、仕事用に使用しているアカウントで Google にログインしています。

私のメール クライアントは、私用に使用するアカウントで Google カレンダーにログインしています。

Googleカレンダーを見ると、カレンダーがありません(仕事用アカウントでは使用していません)。

Thunderbird を見ると、自分のカレンダーが表示されます。

ブラウザとメール クライアントから送信されるトラフィックを確認すると、次のようなヘッダーが表示されます。

Authorization: GoogleLogin auth=...stuff I'm not going to share or it would help you impersonate me

つまり、API を使用するコードが自分自身にログインするため、Thunderbird に「ログイン」しています。

実際、同じアプリケーションが複数のアカウントにアクセスし、そのための認証の詳細がある限り、それらすべてに「ログイン」することができます。

*厳密に言うと、「ログイン」はまったく正しい用語ではなく、接続に状態があるさまざまな種類のアクセス メカニズムを指すと主張する人もいます。その意見がどうであれ、ユーザーはそれを理解しているので、ログインしているかどうかの比喩を使用しています。

于 2012-08-13T16:43:01.790 に答える