2017-12-08 19 views
1

私のウェブサイトでoauth2トークンを永久に使用したいと思います。oauth2トークンを永続的に使用する方法は?

GoogleのAPIを使用すると、ユーザーがGoogleカレンダーを管理する権限を与えられたときに、Google APIからアクセストークンを取得しています。私はそれをデータベースに保存し、最後に使用したいと思います。

しかし、無効になっています。 oauth2リフレッシュトークンAPIを使用してトークンをリフレッシュしようとしました。しかし、次のようにエラーを取得します。

アレイ([エラー] => invalid_grant [ましたerror_description] =>トークンの有効期限が切れたり取り消された。)

私は、ユーザーが許可に彼が入るたびに与えたくありませんウェブサイト

私はこの管理者がこのトークンまたはそれ以外の方法でユーザーのカレンダーにアクセスする必要がある場合もあります。

どうすればこの問題を解決できますか?

答えて

1

代わりに永久トークンを取得しようとしていますが、私はリフレッシュトークンオプションを使用しています。

私はタグを使用してGoogleカレンダーを呼び出すと

$ LOGIN_URL = 'https://accounts.google.com/o/oauth2/auth?scope=' を以下のように、私は "ACCESS_TYPE =オフライン" のようなパラメータを追加しました。 urlencode( 'https://www.googleapis.com/auth/calendar')。 '& redirect_uri ='。 CLIENT_REDIRECT_URL。 '& response_type = code & client_id ='クライアントID 。 '& access_type = offline';

ユーザーが許可すると、私は応答としてrefresh_tokenでaccess_tokenを取得します。私はそれらをデータベースに保存しています。その後、毎回、管理者によるユーザーのカレンダーアクセス時に、ユーザーが自分のサイトで非同期オプションを使用するまで、refresh_token api呼び出しによってデータベースに格納されているrefresh_tokenを使用して新しいaccess_tokenを取得します。

ユーザーがカレンダーを非同期にしたら、データベースを更新します。 問題が解決しました。

+0

私はすぐに私は助けが必要 –

+0

@DilipTiwariすばやくGoogleカレンダーを実装しています。私は迅速にそれをしていない。ところで、あなたが直面している問題は何か分かりますか? –

+0

私は迅速にGoogleカレンダーを実装しましたが、私は自分のアプリを通じてイベントを作成したい –

0

最終的なトークンを取得することはできませんが、ユーザーが資格情報を再提供する必要性を軽減できます。

ソリューションは、(アプリケーションがサーバーまたはまたはエンドユーザのマシン上で実行するかどうかに大きく依存します)を使用しているタイプを付与するもの左右される。あなたはウェブサイトに言及していますので、リフレッシュコードも返すグラントタイプを使用してください。

アプリがサーバー上で実行されていて、authorisation code grant経由でトークンを取得した場合は、アクセストークンを取得したときに更新トークンを取得できるはずです。このリフレッシュトークンを使用して、ユーザーまたは資格情報を必要とせずに、バックチャネルで新しいリフレッシュ/アクセストークンを要求できます。

ユーザーは、アクセスを取り消さない限り、ユーザーのGoogleリソースに長期間アクセスできます。

あなたはimplicit grantのような他の助成金型を、使用している場合、あなたはリフレッシュトークンを取得することはできません。定期的に新しいアクセストークンを取得する必要があります。ユーザーがアプリを実行している端末でGoogleにログインしたままにしておくと、新しいアクセストークンをリクエストしたときにGoogleの認証情報を入力する必要がないので、認証情報を嫌うことはありません。

+0

ご回答ありがとうございます。私は必要に応じて私の答えを得ました。 –

関連する問題