You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Spring应用集成Coinbase API OAuth2登录问题求助

Coinbase OAuth2 本地开发回调问题解决方案

针对你使用urn:ietf:wg:oauth:2.0:oob作为重定向URI时回调未触发的问题,核心原因是这个URI属于无回调(Out-of-Band)授权模式,Coinbase不会自动发起HTTP回调到你的应用,而是通过展示授权码让用户手动传递给应用。以下是具体推进步骤:

1. 明确OOB模式的核心行为

当用户完成Coinbase登录授权后,Coinbase会在页面上显示一个授权码(authorization code),不会自动跳转回你的应用。你需要在应用中添加手动输入授权码的流程来完成后续的token交换。

2. 适配Spring OAuth2客户端配置

确保你的Spring配置正确对应OOB模式,同时保留之前解决403问题所需的请求头:

配置文件示例(application.yml)

spring:
  security:
    oauth2:
      client:
        registration:
          coinbase:
            client-id: 你的Coinbase客户端ID
            client-secret: 你的Coinbase客户端密钥
            authorization-grant-type: authorization_code
            redirect-uri: urn:ietf:wg:oauth:2.0:oob
            scope: wallet:accounts:read,wallet:user:read # 根据你的需求调整权限范围
        provider:
          coinbase:
            authorization-uri: https://www.coinbase.com/oauth/authorize
            token-uri: https://api.coinbase.com/oauth/token
            user-info-uri: https://api.coinbase.com/v2/user
            user-name-attribute: data.id

自定义Token请求头

继续保留User-Agent和CB-VERSION请求头,通过自定义OAuth2AccessTokenResponseClient实现:

@Bean
public OAuth2AccessTokenResponseClient<OAuth2AuthorizationCodeGrantRequest> accessTokenResponseClient() {
  DefaultAuthorizationCodeTokenResponseClient tokenClient = new DefaultAuthorizationCodeTokenResponseClient();
  RestTemplate restTemplate = new RestTemplate() {
    @Override
    protected HttpHeaders createHttpHeaders(Object request) {
      HttpHeaders headers = super.createHttpHeaders(request);
      headers.add("User-Agent", "你的Spring应用名称/版本号");
      headers.add("CB-VERSION", "2024-05-01"); // 使用Coinbase支持的日期版本,建议用当前日期
      return headers;
    }
  };
  tokenClient.setRestOperations(restTemplate);
  return tokenClient;
}

3. 添加手动提交授权码的流程

  • 在前端页面添加一个表单,包含授权码输入框和提交按钮,提交到后端自定义接口。
  • 后端接口接收授权码后,调用Coinbase的/oauth/token接口换取access token和refresh token,完成用户登录逻辑(如生成会话、存储用户信息等)。

4. 更便捷的本地开发替代方案

如果不想使用手动输入授权码的方式,可以改用本地可访问的回调URI:

  • 在Coinbase开发者后台的应用设置中,添加http://localhost:8080/login/oauth2/code/coinbase到允许的重定向URI列表。
  • 修改Spring配置中的redirect-uri为上述地址,此时Coinbase会自动跳转回你的应用,Spring Security OAuth2客户端会自动处理授权码交换,无需手动干预。

内容的提问来源于stack exchange,提问作者Gary Kephart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:10:10