首页 > 解决方案 > 如何为oauth2 access_token做akka http请求

问题描述

我正在尝试请求身份验证服务器获取 access_token 。我有一个可用的 curl 命令,但无法使用 Akka HTTP 实现。

 curl -v -u CLIENT_ID:CLIENT_SECRET -k -X POST -d {} 'URL/oauth2/token?grant_type=client_credentials&scope=Scope'

或者

curl -i -H 'Authorization: Basic Base64(CLIENT_ID:CLIENT_SECRET)' --request POST URL/oauth2/token -d 'grant_type=client_credentials&scope=scope'

我在使用 http.singleRequest 请求时收到405 Method Not Allowed 错误

def getToken(url:String, user: String, pass: String, scope:String) = {

  Http()
    .singleRequest(
      Post(
        Uri(url),
        Map("grant_type" -> "client_credentials", "scope" -> s"$scope"),
      ).withHeaders(
        Authorization(BasicHttpCredentials(user, pass)),
      ),
    )

}

标签: akkaakka-http

解决方案


val request = HttpRequest(
  HttpMethods.POST,
  config.authDomain,
  entity = FormData
    .apply(
      Map(
        "grant_type" -> s"${config.grant_type}",
        "scope" -> s"${config.api_scope}",
      ),
    )
    .toEntity,
).withHeaders(Authorization(BasicHttpCredentials(config.access_id, config.access_secret)))

推荐阅读