😎

【Google API】トークン取得時に使用するJacksonFactoryのdeprecate対応(Java/Scala)

2021/12/16に公開

概要

以前に紹介した【Google API】GoogleCredentialを使用せず認可コードからcredentialの情報を取得(Java/Kotlin)という記事で、トークン情報を取得する際com.google.api.client.json.jackson2.JacksonFactoryのライブラリが使用したのですが、どうやらこのクラスは2021年12月時点で既にdeprecateになっているようです。
今回はこのJacksonFactoryの代わりに、何を使えば良いのかをメモ書きします。

代替手段

'com.google.api.client.json.jackson2.JacksonFactory' is deprecated. What are my options?の記事にある通り、com.google.api.client.json.GsonFactoryのクラスを使うのが、代替手段だそうです。
JacksonFactoryのドキュメントにも、GsonFactoryを代替として使うように案内されています。

実装サンプル

以前に私が書いた記事のトークン取得処理そのままですが、実装サンプルを記載します。今回はScalaですが特にJavaでもKotlinでも実装内容はほぼ変わらないと思います。

  def authByGoogleAuthCode(authCode: String): Unit = {
    val clientId = config.getString("google.clientId")
    val secret = config.getString("google.secret")
    // authCodeからtokenを取得
    val req = new GoogleAuthorizationCodeTokenRequest(
      new NetHttpTransport(),
      GsonFactory.getDefaultInstance(), // ここでJacksonFactoryではなくGsonFactoryを使用する
      "https://oauth2.googleapis.com/token",
      clientId,
      secret,
      authCode,
      "postmessage"
    )
    req.setGrantType("authorization_code")
    val tokenResponse = req.execute()

Discussion