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

nzrxty8p  于 2022-10-31  发布在  Spring
关注(0)|答案(1)|浏览(229)

我想访问暴雪开发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'的新存取权杖。提供者管理员未设定为支援它。
谁能给我举个有效的例子?

cigdeys3

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

相关问题