java - 使用 Spring oauth2 身份验证访问 Blizzard Dev API

标签 java spring rest spring-boot oauth-2.0

我想访问暴雪开发 API。不幸的是我无法继续进行 oauth2 身份验证。

我想我已经尝试了所有可能的配置组合,但没有成功。我正在尝试实现此处描述的客户端凭据流程:https://develop.battle.net/documentation/guides/using-oauth/client-credentials-flow

我当前的配置代码

@Configuration
@EnableOAuth2Client
public class OAuth2Configuration {

    @Bean
    public OAuth2ProtectedResourceDetails oauth2ProtectedResourceDetails(){

        AuthorizationCodeResourceDetails details = new AuthorizationCodeResourceDetails();
        details.setClientId("clientid");
        details.setAccessTokenUri("https://us.battle.net/oauth/token");
        details.setClientSecret("clientsecret");
        details.setGrantType("client_credentials");
        return details;
    }


    @Bean
    public OAuth2RestTemplate oauth2RestTemplate(OAuth2ClientContext oauth2ClientContext,
                                                 OAuth2ProtectedResourceDetails details) {

        return new OAuth2RestTemplate(details, oauth2ClientContext);
    }
}

测试客户端:

@Service
public class WoWItemClient {

    @Autowired
    private RestTemplate restTemplate;

    public Item getItems(){
        String uri = "https://eu.api.blizzard.com/data/wow/item/19019";
   
        String result = restTemplate.getForObject(uri, String.class);
        System.out.println(result);
        return null;
    }

}

使用这些设置我收到以下错误:

Unable to obtain a new access token for resource 'null'. The provider manager is not configured to support it.

有人能给我看一个可行的例子吗?

最佳答案

我自己找到了答案。感谢所有不辞辛劳的人。

总而言之,有两个问题:

  1. 使用 uri,而不是 https://eu.api.blizzard.com/data/wow/item/19019应该是https://us.api.blizzard.com/data/wow/item/19019?namespace=static-us&locale=de_DE token 请求 uri 也应以 us 开头:https://us.battle.net/oauth/token

  2. 我没有使用 AuthorizationCodeResourceDetails 类,而是使用了 ClientCredentialsResourceDetails。这个错误显然是:D

关于java - 使用 Spring oauth2 身份验证访问 Blizzard Dev API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57544222/

相关文章:

java - JBoss 6.1.0 AS 过滤器在 web.xml 中的位置

javascript - 为什么 Jquery/ajax 调用 RESTful 服务无法获得成功回调?

java - 如何以编程方式创建 Spring 计划作业?

java - 如何使用反射从 View 和 Controller 向多个 JButton 添加监听器?

java - Neo4j Java API : GC overhead limit exceeded after running multiple queries

java - Spring中如何在非组件类中实现缓存

java - 当tomcat关闭时ExecutorService管理的线程会发生什么?

java - db.collection.find() 在 EclipseLink 的 native 查询中不起作用

java - 在当前项目和插件组中未找到前缀 'jetty' 的插件

java - 编写 QBE Restful 方法的最佳方法?