Spring 社交 - Facebook 集成
Spring Social - Facebook integration
我需要将 spring-social 与 Facebook 集成,并从我的公司页面获取 feeds/post。
代码片段
public static void main(String[] args) {
Facebook facebook1 = new FacebookTemplate("");
FeedOperations feedOperations = facebook1.feedOperations();
PagedList<Post> feeds = feedOperations.getFeed();
for (Post post : feeds) {
System.out.println("@" + post.getName());
}
}
我已经在“https://developers.facebook.com”上生成了密钥,但是当我在 FacebookTemplate("");
中输入相同的密钥并运行程序时,它会抛出一个错误。
Exception in thread "main" org.springframework.social.InvalidAuthorizationException: Invalid OAuth access token.
at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleFacebookError(FacebookErrorHandler.java:81)
at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleError(FacebookErrorHandler.java:59)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:616)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:572)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:547)
Please help me in this regard,
1.) Where and how can i generate keys.
2.) How can i get access to user feeds. My secret key might need to get access to that user profile.
3.) Where i need to provide user
直接使用 FacebookTemplate 构造函数将为您提供一个未经身份验证(即没有 OAuth)的连接,这将适用于不需要身份验证的查询。这就是您获得授权异常的原因,访问提要需要身份验证(经过身份验证的 Facebook 用户,已为您的应用程序提供执行这些操作的适当授权)。
请注意,您将需要一种方法来验证用户的访问令牌,而在控制台应用程序中这样做可能会很棘手。然而,在 WebApplication 中使用 Spring Social 非常简单,基本上您只需要
@Controller
@RequestMapping("/")
public class HelloController {
private Facebook facebook;
private ConnectionRepository connectionRepository;
@Inject
public HelloController(Facebook facebook, ConnectionRepository connectionRepository) {
this.facebook = facebook;
this.connectionRepository = connectionRepository;
}
@RequestMapping(method=RequestMethod.GET)
public String helloFacebook(Model model) {
if (connectionRepository.findPrimaryConnection(Facebook.class) == null) {
return "redirect:/connect/facebook";
}
model.addAttribute("facebookProfile", facebook.userOperations().getUserProfile());
PagedList<Post> feed = facebook.feedOperations().getFeed();
model.addAttribute("feed", feed);
return "hello";
}
}
(示例取自此处:https://github.com/spring-guides/gs-accessing-facebook)
spring.social.facebook.appId
和 spring.social.facebook.appSecret
配置正确。
要使用控制台应用程序测试您的查询,您可能
- 在 Facebook 的 api 页面上创建应用程序。
- 转到https://developers.facebook.com/tools/accesstoken/
- 在
FacebookTemplate
-Constructor 中使用该标记
这将永远是您的用户,因此您可能不希望将此应用公开发布 ;)
我需要将 spring-social 与 Facebook 集成,并从我的公司页面获取 feeds/post。
代码片段
public static void main(String[] args) {
Facebook facebook1 = new FacebookTemplate("");
FeedOperations feedOperations = facebook1.feedOperations();
PagedList<Post> feeds = feedOperations.getFeed();
for (Post post : feeds) {
System.out.println("@" + post.getName());
}
}
我已经在“https://developers.facebook.com”上生成了密钥,但是当我在 FacebookTemplate("");
中输入相同的密钥并运行程序时,它会抛出一个错误。
Exception in thread "main" org.springframework.social.InvalidAuthorizationException: Invalid OAuth access token.
at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleFacebookError(FacebookErrorHandler.java:81)
at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleError(FacebookErrorHandler.java:59)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:616)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:572)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:547)
Please help me in this regard,
1.) Where and how can i generate keys.
2.) How can i get access to user feeds. My secret key might need to get access to that user profile.
3.) Where i need to provide user
直接使用 FacebookTemplate 构造函数将为您提供一个未经身份验证(即没有 OAuth)的连接,这将适用于不需要身份验证的查询。这就是您获得授权异常的原因,访问提要需要身份验证(经过身份验证的 Facebook 用户,已为您的应用程序提供执行这些操作的适当授权)。
请注意,您将需要一种方法来验证用户的访问令牌,而在控制台应用程序中这样做可能会很棘手。然而,在 WebApplication 中使用 Spring Social 非常简单,基本上您只需要
@Controller
@RequestMapping("/")
public class HelloController {
private Facebook facebook;
private ConnectionRepository connectionRepository;
@Inject
public HelloController(Facebook facebook, ConnectionRepository connectionRepository) {
this.facebook = facebook;
this.connectionRepository = connectionRepository;
}
@RequestMapping(method=RequestMethod.GET)
public String helloFacebook(Model model) {
if (connectionRepository.findPrimaryConnection(Facebook.class) == null) {
return "redirect:/connect/facebook";
}
model.addAttribute("facebookProfile", facebook.userOperations().getUserProfile());
PagedList<Post> feed = facebook.feedOperations().getFeed();
model.addAttribute("feed", feed);
return "hello";
}
}
(示例取自此处:https://github.com/spring-guides/gs-accessing-facebook)
spring.social.facebook.appId
和 spring.social.facebook.appSecret
配置正确。
要使用控制台应用程序测试您的查询,您可能
- 在 Facebook 的 api 页面上创建应用程序。
- 转到https://developers.facebook.com/tools/accesstoken/
- 在
FacebookTemplate
-Constructor 中使用该标记
这将永远是您的用户,因此您可能不希望将此应用公开发布 ;)