この記事では、Google OAuth 2.0を利用したアプリケーション開発において、リフレッシュトークンが発行される仕組みと、テスト目的で再取得する方法について解説します。
概要
リフレッシュトークンは、Googleの仕様により、ユーザーがアプリケーションに対して初めてアクセスを許可(承認)した一度だけ発行されます。2回目以降の認証では、原則として新しいリフレッシュトークンは発行されません。
仕組み
認証フローにおけるトークンの発行は、ユーザーの承認が初回か2回目以降かで異なります。
-
初回承認時
ユーザーが初めてアプリを信頼し、Googleアカウントへのアクセスを許可する際、Googleは長期的な信頼の証としてリフレッシュトークンと、短期的なアクセスキーであるアクセストークンの両方を発行します。 -
2回目以降の認証
ユーザーが一度アプリを承認すると、その許可はGoogleアカウントに記録されます。そのため、再度認証を行っても、信頼関係は継続していると見なされ、新しいアクセストークンのみが発行されます。
開発時によくある誤解
「特定の一人にしかリフレッシュトークンが発行されない」という現象は、開発中のテストで発生しやすい誤解です。
これは、開発者自身のアカウントで最初にテストを行いリフレッシュトークンを取得した後、同じアカウントでテストを繰り返しても再発行されないためです。実際には、ユーザーごと、最初の1回というルールで正しく動作しています。
リフレッシュトークンの再取得方法
テスト目的で、同じGoogleアカウントで新しいリフレッシュトークンを意図的に取得したい場合は、アカウントとアプリの連携を一度リセットする必要があります。
-
Googleアカウントの権限管理ページにアクセスします。
-
「サードパーティ製のアプリとサービス」の一覧から、対象のアプリケーションを探します。
-
アプリを選択し、「すべての接続を削除」をクリックしてアクセス権を取り消します。
この操作により、Google側での承認がリセットされるため、次にユーザーがアプリにログインすると「初回」として扱われ、新しいリフレッシュトークンが発行されます。