gpt4 book ai didi

java - 需要帮助从 vkontakte 获取好友

转载 作者:行者123 更新时间:2023-12-02 04:18:24 24 4
gpt4 key购买 nike

我已经编写了oauth2社交客户端,但无法获取授权用户的好友列表请看一下我的代码,看看缺少什么/问候

请查看@RequestMapping("vkontakte/friends")

java 1.8 spring安全

 @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;

最佳答案

为了从 Vkontakte 获取好友,您必须声明一个好友对象,该对象将包含好友 JSON 结构的所有字段。

根据documentation ,每个 friend 都有一个 id、名字和姓氏,但是响应对象比我们需要的要复杂一些,因此您可以删除不需要的内容。

假设我们需要响应的所有属性,我们可以得出两个对象:结果和 friend 。

Vkontakte好友对象

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class VkontakteFriend {

private Long id;

@JsonProperty("first_name")
private String firstName;

@JsonProperty("last_name")
private String lastName;
}

通用结果对象

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class FriendResponse {

private Long count;
private List<VkontakteFriend> items;

}

剩下的唯一一件事就是调用 API 并将响应映射到 Java 对象。

 vkTemplate.getForObject(vkResource().getUserFriendsInfoUri(), FriendResponse.class);

关于java - 需要帮助从 vkontakte 获取好友,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56651368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com