我想访问暴雪开发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条答案
按热度按时间cigdeys31#
我自己想出了答案。感谢每一个不嫌麻烦的人。
总而言之,有两个问题:
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应该以US:https://us.battle.net/oauth/token
1.我没有使用AuthorizationCodeResourceDetails类,而是使用了ClientCredentialsResourceDetails。此错误显然是:D