0

我在我的 kotlin Ktor 后端实现了 OAuth 授权。

使用时grant_type = client_credentials,一切都按预期工作。

但是,在使用时grant_type = password,它甚至不执行loadTokens.

loadTokens示例中的断点client_credentials确实命中,在密码示例中,loadTokens命中了几次但内部没有。tokenClient即使配置了日志级别,第二个示例中也没有记录身份验证请求。

这个有效:

if (user == null) {
  loadTokens {
    val tokens = tokenClient.submitForm<FaOAuthResult>("https://sandbox.xxx.io/oauth/token",
      Parameters.build {
        append("grant_type", "client_credentials")
        append("client_id", "xxx")
        append("client_secret", "xxx")
    })

    BearerTokens(
      accessToken = tokens.access_token,
      refreshToken = tokens.access_token
    )
  }

而这个没有:

else {
  loadTokens {
    val tokens =
      tokenClient.submitForm<FaOAuthResult>("https://sandbox.xxx.io/oauth/token",
        Parameters.build {
          append("grant_type", "password")
          append("client_id", "xxx")
          append("client_secret", "xxx")
          append("username", user.finapiUserId!!)
          append("password", user.finapiPassword!!)
        })

        BearerTokens(
          accessToken = tokens.access_token,
          refreshToken = tokens.access_token
        )
     }
4

0 回答 0