java需要帮助从vkontakte获取朋友
我已经编写了oauth2社交客户端,但无法获取授权用户的好友列表 请看一下我的代码,看看遗漏了什么/ 问候
请查看@RequestMapping(“vkontakte/friends”)
Java1.8Spring安全性
@SpringBootApplication
@RestController
@EnableOAuth2Client
public class SocialApplication extends WebSecurityConfigurerAdapter {
@Autowired
OAuth2ClientContext oAuth2ClientContext;
@RequestMapping({ "/user", "/me" })
public Map<String, String> user(Principal principal) {
Map<String, String> map = new LinkedHashMap<>();
map.put("name", principal.getName());
return map;
}
//TODO как это оформить на фронтенде?
@RequestMapping("/vkontakte/friends")
public Map<String,String> friends() {
OAuth2RestTemplate vkTemplate = new OAuth2RestTemplate(vk(), oAuth2ClientContext);
UserInfoTokenServices tokenServicesvk = new UserInfoTokenServices(vkResource().getUserInfoUri(), vk().getClientId());
tokenServicesvk.setRestTemplate(vkTemplate);
ObjectNode resultNode = vkTemplate.getForObject(vkResource().getUserFriendsInfoUri(), ObjectNode.class);
ArrayNode data = (ArrayNode) resultNode.get("data");
Map<String, String> map = new LinkedHashMap<>();
for (JsonNode dataNode : data) {
//TODO надо как то правильно все получить?
}
return map;
# 1 楼答案
为了从Vkontakte获取好友,必须声明一个friend对象,该对象将包含friend JSON结构的所有字段
根据documentation,每个朋友都有一个id、名字和姓氏,然而,响应对象比我们需要的要复杂一些,所以您可能会删除不需要的内容
假设我们需要响应的所有属性,我们可以得到两个对象:result和friend
Vkontakte朋友对象
通用结果对象
剩下的就是调用API并将响应映射到Java对象