Java:使用 RestFB 获取 facebook 上的群组列表

标签 java facebook restfb

我正在编写一个应用程序来获取用户当前加入的所有组数据。但我不知道为什么它只适用于我的 Facebook 帐户(也是应用程序的所有者),对于其他帐户,列表返回 null。

这是我用来创建用户登录网址的代码

    AppInfo appInfo = new AppInfo();
    String appId = appInfo.getAppId();
    String redirectUrl = URLEncoder.encode(appInfo.getRedirectUrl(), "utf-8");
    List<String> list = appInfo.getPermission();
    StringBuilder builder = new StringBuilder();
    for(String permission : list){
        if(builder.length() > 0)
            builder.append(",");
        builder.append(permission);
    }
    String url = "https://graph.facebook.com/oauth/authorize?display=popup&client_id="+appId+
            "&redirect_uri="+redirectUrl+"&scope="+builder.toString();

登录成功时的操作(获取访问 token ):

    @RequestMapping(value="/success")
public ModelAndView success(@RequestParam(value = "code") String authorizationCode) throws IOException{
    AppInfo appInfo = new AppInfo();
    String appId = appInfo.getAppId();
    String secretKey = appInfo.getAppSecret();
    String redirectUrl = URLEncoder.encode(appInfo.getRedirectUrl(), "utf-8");

    WebRequestor wr = new DefaultWebRequestor();
    WebRequestor.Response accessTokenResponse = wr.executeGet(
            "https://graph.facebook.com/oauth/access_token?client_id=" + appId + "&redirect_uri=" + redirectUrl
            + "&client_secret=" + secretKey + "&code=" + authorizationCode);

    FacebookClient.AccessToken token = DefaultFacebookClient.AccessToken.fromQueryString(accessTokenResponse.getBody());
    String accessToken = token.getAccessToken();

    ModelAndView mav = new ModelAndView();
    mav.setViewName("success");
    mav.addObject("authorizationCode", authorizationCode);
    mav.addObject("accessToken", accessToken);
    return mav;
}

最后一个是显示组列表的操作:

    @RequestMapping(value="/facebookData", method=RequestMethod.POST)
public String autoFacebook(@RequestParam("accessToken") String accessToken, Model model){
    FacebookClient fbClient;        
    Post firstGroupPost = null;
    fbClient = new DefaultFacebookClient(accessToken, Version.VERSION_2_3);

    Connection<Group> group = fbClient.fetchConnection("me/groups", Group.class);
    if(!group.getData().isEmpty()){
        Group firstGroup = group.getData().get(0);

        Connection<Post> groupPost = fbClient.fetchConnection(firstGroup.getId()+"/feed", Post.class);
        firstGroupPost = groupPost.getData().get(0);
    }

    model.addAttribute("firstGroupPost", firstGroupPost);
    model.addAttribute("group", group);
    return "facebook";
}

最佳答案

user_group 权限是扩展权限。因此,要与相应应用程序的管理员/测试人员/开发人员之外的其他用户一起使用它,该应用程序需要进行登录审核。

查看

但是你会遇到一个问题:

This permission is granted to apps building a Facebook-branded client on platforms where Facebook is not already available. For example, Android and iOS apps will not be approved for this permission. In addition, Web, Desktop, in-car and TV apps will not be granted this permission.

关于Java:使用 RestFB 获取 facebook 上的群组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31308247/

相关文章:

java - 我不断收到 NullPointerException 但找不到我犯错的地方

facebook - HTML5 喜欢盒子坏了

facebook - 一些 Facebook 好友的生日返回为 null,但我拥有正确的 API 权限

android - 在 Android 上的 Facebook 应用程序(如果已安装)中打开 Facebook 页面

java - 无法访问我的好友的好友计数

java - 如何在 Java、Mockito 中测试子列表的相等性

java - 删除字段的数据类型应该是什么?

java - 为什么我的 ArrayList 是空的,即使 firebase datasnapshot 包含子项

java - facebook:使用 restfb 将照片发布到时间线

java - 使用RestFB获取用户好友图片的方法?