我一直在使用下面的代码从我的facebook家中使用restFb api获取数据。
import java.util.List;
import com.restfb.Connection;
import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.FacebookClient.AccessToken;
import com.restfb.types.Post;
import com.restfb.types.User;
public class restFB_tester {
public static void main(String[] args) {
//60 days auth
String authToken="XXXXXXX";
FacebookClient fbClient = new DefaultFacebookClient(authToken);
Connection<Post> result=fbClient.fetchConnection("me/home",Post.class);
int counter =0;
for(List<Post> page :result)
{
for(Post aPost:page)
{
System.out.println(aPost.getMessage());
System.out.println("fb.com/"+aPost.getId());
counter++;
}
}
System.out.println("No of Posts : "+counter);
}
}
这会引发错误:
线程中的异常&#34; main&#34; com.restfb.exception.FacebookOAuthException:收到类型为OAuthException的Facebook错误响应:(#200)需要扩展权限:read_stream(代码200,子代码为null) at com.restfb.DefaultFacebookClient $ DefaultGraphFacebookExceptionMapper.exceptionForTypeAndMessage(DefaultFacebookClient.java:1186) at com.restfb.DefaultFacebookClient.throwFacebookResponseStatusExceptionIfNecessary(DefaultFacebookClient.java:1112) at com.restfb.DefaultFacebookClient.makeRequestAndProcessResponse(DefaultFacebookClient.java:1053) 在com.restfb.DefaultFacebookClient.makeRequest(DefaultFacebookClient.java:964) 在com.restfb.DefaultFacebookClient.makeRequest(DefaultFacebookClient.java:926) 在com.restfb.DefaultFacebookClient.fetchConnection(DefaultFacebookClient.java:356) 在org.hive.facebook.restFB_tester.main(restFB_tester.java:29)
我一直试图解决这个问题但却找不到运气。 如果我使用&#34; me / feeds&#34;我能够获得数据。 ,它返回用户数据。我尝试在谷歌上找到它并尝试了不同的方法,但没有帮助。我已经在创建令牌时给予了所有权限。
请让我知道我在哪里做错了或者有什么可能解决这个问题。谢谢。
答案 0 :(得分:-1)
请让我知道我在哪里做错了
您使用的是旧代码,显然没有费心去查看当前API版本中可能存在的内容。
https://developers.facebook.com/docs/apps/changelog#v2_4_deprecations:
他获取了/v2.4/{user_id}/home,GET/v2.4/{user_id}/inbox,以及GET /v2.4/{user_id}/notifications操作以及read_stream,read_mailbox和manage_notifications权限在v2.4中已弃用。
你根本无法获得这些数据。您必须使用/me/feed
以及提供的帖子。 (这些是哪些,在文档中提到。)