我对sprig / spring-social相当新鲜。我试图从我的spring boot(v1.4)应用程序执行对Facebook API的请求,以交换使用autT代码(我用我的前端应用程序获取)以获取accessToken。这是我的方式
FacebookConnectionFactory facebookConnectionFactory = new FacebookConnectionFactory(fbAppId, fbAppSecret);
AccessGrant accessGrant = facebookConnectionFactory.getOAuthOperations()
.exchangeForAccess(authCode, redirectUri, null);
因此,我得到的AccessGrant
accessToken
等于null
。尝试调试代码转换流程我可以看到正确的authToken实际上是在FacebookOAuth2Template::postForAccessGrant()
中收到的,但由于某种原因它转换为MultiValueMap<String, String>
,即:
protected AccessGrant postForAccessGrant(String accessTokenUrl, MultiValueMap<String, String> parameters) {
MultiValueMap<String, String> response = getRestTemplate().postForObject(accessTokenUrl, parameters, MultiValueMap.class);
String expires = response.getFirst("expires");
return new AccessGrant(response.getFirst("access_token"), null, null, expires != null ? Long.valueOf(expires) : null);
}
我的response
MultiValueMap
因此包含一个条目,其中一个键是facebook authToken响应。显然,所有后续的response.getFirst()
调用都不会返回任何内容
我非常确定我在这里遗漏了一些明显的东西,但我仍然无法理解为什么authToken响应会像它一样转换为MutliValueMap
答案 0 :(得分:0)
似乎旧版本的spring-social-facebook依赖项(1.1.0)已被纳入项目并用于通信。升级到2.x版本解决了问题