如何通过Spring Social Facebook发送apprequest

时间:2012-08-31 14:45:56

标签: java facebook spring facebook-graph-api spring-social

我一直在为Facebook挖掘Spring Social(1.0.2.RELEASE)。我无法找到如何通过春季社交发送apprequest。我已经在facebook上有一个带有键和内容的应用程序。我可以获取朋友等但不能向特定的Facebook用户发送apprequest。真的很感激。

2 个答案:

答案 0 :(得分:5)

以下示例应该可以解决问题 - 即创建应用访问令牌,然后使用已使用创建的应用访问令牌初始化的FacebookTemplate创建请求

// retrieve app access token
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=<app_id>&client_secret=<app_secret>",  String.class);
String appAccessToken = result.replaceAll("access_token=", "");

// create the request       
FacebookTemplate appRequestTemplate = new FacebookTemplate(appAccessToken);
String userId = "1234567890";
MultiValueMap<String, Object> requestData = new LinkedMultiValueMap<String, Object>();
requestData.set("message", "Sending a request through to you...");
String resultOfApprequest = appRequestTemplate.publish(userId, "apprequests", requestData);

答案 1 :(得分:0)

根据Facebook文档,应用程序请求通过POST发送给用户到Graph API。请参阅此处的“创建”部分:

https://developers.facebook.com/docs/reference/api/user/#apprequests

Spring社交Facebook有一个GraphApi类,有两种发送POST的方法,“publish()”尝试从响应中提取id,而“post()”则不是:

http://static.springsource.org/spring-social-facebook/docs/1.0.x/api/org/springframework/social/facebook/api/GraphApi.html

所以你可能需要按照以下方式拨打电话:

Map<String, Object> requestData = new HashMap<String, Object>();
requestData.put("message", "My app's request message");
String requestId = graphApi.publish(userId, "apprequests", requestData);