2012-03-21 10 views
16

この質問はhereの前に聞かれました。質問に対する応答/回答では、ユーザはrefresh_tokenをアプリケーションに保存するように指示します(セッションではなく、データベースではありませんが、保存場所は問われません)。 Googleのドキュメントを通した後、access_tokenの有効期限が切れてから有効ではないようです。現在、一定間隔ごとに自動的にトークンを自動的にリフレッシュすることも、サービスが無効なトークンエラーを返すことでトークンの寿命を延ばすこともできますが、何らかの理由でこの手動プロセスが少しハッキリしているようです。私の質問は:Google APIへのログインを自動化して、OAuth 2.0トークンを既知のユーザーアカウントにアクセスさせる方法

  • これは、手動でログインしてアプリケーションに永続化することで、既知のユーザーアカウントのGoogleカレンダー/アプリデータにアクセスする最も効果的な(一般的に認められた)方法ですか?または、このユーザーアカウントにプログラムでログインしてOAuthの手順を実行できるもう1つのメカニズムがありますか?私のアプリケーションで

答えて

25

は、流れはこのようなものです:

  1. が定義されていないaccess_token場合、彼らは、Googleのデータにアクセスするアプリケーションへのアクセスを許可し、Googleのページにユーザーをリダイレクトします。これにより、あなたのアプリに認証コードが返されます。
  2. 承認コードを使用してaccess_tokenrefresh_tokenを取得します。返されたexpires_inの値も保存して、access_tokenが期限切れになったときに通知し、使用できなくなることを通知する必要があります。
  3. APIにアクセスする必要がある場合はいつでも、access_tokenが期限切れになっているかどうかDBにチェックインすることができます。refresh_tokenを使用してAPIにアクセスする前に新しいaccess_tokenを取得してください。

私は、このようにそれをやって何の問題に実行していない - ユーザに関する限り、彼らは一度だけアクセス権を付与する必要があり、その後、アプリがそこからの認証を管理します。

あなたのアプリに最初にアクセスを許可したユーザーに基づいてプログラムがプログラムで再認証されるため、手動で何もする必要はありません。 OAuthプロセスを再度実行するには、ユーザーがデバイスの前に座って手動でアクセス権を付与する必要があるため、実際にはこれを行う方法は他にありません。これは、データベースにaccess_tokenrefresh_tokenを残すポイントです。

+0

@mattewh http://stackoverflow.com/questions/24894789/google-oauth-and-owin-how-to-renew-the-access-token-using-the-refresh-token –

+3

自動化されていないユーザーの操作が必要な場合 –

+0

@KeithTyler OAuthはユーザーの同意に少なくとも一度は依存します。それ以降の対話は必要ありません。 –

関連する問題