🦉
【Google API】refreshTokenからaccessTokenを取得する(Java/Kotlin)
概要
以前に【Google API】GoogleCredentialを使用せず認可コードからcredentialの情報を取得(Java/Kotlin)という記事で、Googleの認証APIで認証コードからcredential情報を取得する実装を紹介しました。今回はrefreshTokenからaccessTokenを取得する、Kotlinでの実装を紹介したいと思います。
前提
- refreshTokenの位置付けについては、Refresh Token: どのような場合に使用し、どのように JWT と相互作用するかを参照ください。
- refreshTokenは、認証コードから認証を行う等で、すでに取得済みであることを前提とします。
- クライアントIDとシークレットを事前に取得済みの前提とします。クライアントIDとシークレットの取得方法はGoogle 外部認証用のクライアントIDとクライアントシークレットを取得するの記事を参照ください。
対応
Javaでの実装になりますが、こちらのstackoverflowの記事に、実装サンプルが紹介されています。Google APIのライブラリのGoogleRefreshTokenRequestを使えば、refreshTokenからaccessTokenを取得できそうです。
実装サンプル
Kotlinでの実装サンプルですが、Javaでもほぼ同様になります。
fun getAccessTokenFromRefreshToken(googleClientId: String, googleSecret: String): String {
val tokenResponse = GoogleRefreshTokenRequest(
NetHttpTransport(),
JacksonFactory.getDefaultInstance(),
refreshToken,
googleClientId,
googleSecret
).execute()
return tokenResponse.accessToken
}
Discussion