问题描述
我一直在努力为Fitbit API实现授权码授予流程。我已经设置了WebSecurityConfigurerAdapter,然后正确地重定向到了Fitbit / oauth2 / authorize页面,在这里可以授予权限。但是,当我允许我的应用程序访问时,它显示以下内容:authorization_request_not_found。此外,该URL不包含代码。 我真的找不到很好的文档来说明如何使用Spring Boot实施下一步。 如果有人能指出我正确的方向,将不胜感激。谢谢 堆栈:
解决方法
问题在于访问令牌请求。按照授权代码授予流程,您需要将授权标头设置为基本。用冒号连接并编码为 Base64 的 client_id 和机密将是您的基本授权标头值。
您可以在官方文档中找到更多信息:Access Token Request
在 spring security 中实现这个非常简单。只需按照本教程: Custom Token Request
CustomRequestEntityConverter 类的Convert 方法应该如下所示:
@Override
public RequestEntity<?> convert(OAuth2AuthorizationCodeGrantRequest req) {
RequestEntity<?> entity = defaultConverter.convert(req);
MultiValueMap<String,String> headers = entity.getHeaders();
String authorization = Base64.getEncoder().encodeToString(BASIC_AUTHORIZATION.getBytes());
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setBasicAuth(authorization);
httpHeaders.addAll(headers);
return new RequestEntity<>(entity.getBody(),httpHeaders,entity.getMethod(),entity.getUrl());
}