通过Spring oauth2身份验证访问暴雪开发API



我想访问暴雪开发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;
}
}

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

无法获取资源"null"的新访问令牌。提供程序管理器未配置为支持它。

有人可以给我看一个工作的例子吗?

我自己想出了答案。 感谢所有不厌其烦的人。

总而言之,有两个问题:

  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 令牌请求 URI 也应该从我们开始:https://us.battle.net/oauth/token

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

最新更新