oAuth2.0-Fitbit不返回验证码属性不能为空错误

问题描述

我一直在努力为Fitbit API实现授权码授予流程。我已经设置了WebSecurityConfigurerAdapter,然后正确地重定向到了Fitbit / oauth2 / authorize页面在这里可以授予权限。但是,当我允许我的应用程序访问时,它显示以下内容:authorization_request_not_found。此外,该URL不包含代码

enter image description here

我真的找不到很好的文档来说明如何使用Spring Boot实施下一步。 如果有人能指出我正确的方向,将不胜感激。谢谢 堆栈:

enter image description here

解决方法

问题在于访问令牌请求。按照授权代码授予流程,您需要将授权标头设置为基本。用冒号连接并编码为 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());
}