diff --git a/zio-cli/shared/src/main/scala/zio/cli/oauth2/OAuth2.scala b/zio-cli/shared/src/main/scala/zio/cli/oauth2/OAuth2.scala index 7a210d4d..bf356d5d 100644 --- a/zio-cli/shared/src/main/scala/zio/cli/oauth2/OAuth2.scala +++ b/zio-cli/shared/src/main/scala/zio/cli/oauth2/OAuth2.scala @@ -218,7 +218,7 @@ private[cli] class OAuth2(provider: OAuth2Provider, file: Path, scope: List[Stri t.accessToken, t.tokenType, t.expiresIn.map(exp => time.plus(exp)), - refreshToken.orElse(t.refreshToken), + t.refreshToken.orElse(refreshToken), t.scope ) ) diff --git a/zio-cli/shared/src/main/scala/zio/cli/oauth2/OAuth2Provider.scala b/zio-cli/shared/src/main/scala/zio/cli/oauth2/OAuth2Provider.scala index bd6e9a88..0dc32270 100644 --- a/zio-cli/shared/src/main/scala/zio/cli/oauth2/OAuth2Provider.scala +++ b/zio-cli/shared/src/main/scala/zio/cli/oauth2/OAuth2Provider.scala @@ -101,7 +101,19 @@ object OAuth2Provider { .POST(HttpRequest.BodyPublishers.noBody()) .build() - override def refreshTokenRequest(refreshToken: String): Option[HttpRequest] = None + override def refreshTokenRequest(refreshToken: String): Option[HttpRequest] = + Some( + HttpRequest + .newBuilder() + .uri( + URI.create( + s"https://github.com/login/oauth/access_token?client_id=$clientId&grant_type=refresh_token&refresh_token=$refreshToken" + ) + ) + .header("Accept", "application/json") + .POST(HttpRequest.BodyPublishers.noBody()) + .build() + ) } final case class Google(clientId: String, clientSecret: String) extends OAuth2Provider {