akka - 如何为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)),
),
)
}
解决方案
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)))
推荐阅读
- fitnesse - Fitnesse: is it possible to disable Test and Suite buttons?
- android - Android 发布模式下的 Facebook 登录问题
- c - 指针解引用符号 * 可以称为“多”吗?
- javalite - ActiveWeb:在模板中调用时模型设置器/获取器不起作用
- javascript - 在 React + Redux 中创建输入组件并控制多个表单状态
- database - DB2:涉及多个表的更新查询
- rust - `return 5;` 是 Rust 中的语句或表达式吗?
- python - 如何使用键对 Pandas DataFrame 进行排序?
- mysql - MySQL 从最后 50 行中选择最高的
- rust - 什么是清除和重用 Rust PathBuf 的跨平台方法?