簡體   English   中英

Java:使用RestFB獲取Facebook上的群組列表

[英]Java: get list of group on facebook using 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();

登錄成功時的操作(獲取訪問令牌):

    @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權限是擴展權限。 因此,要將其與相應應用程序的管理員/測試人員/開發人員以外的其他用戶一起使用,則該應用程序需要進入“登錄查看”。

看到

但是您這里會遇到問題:

此權限授予在尚不可用Facebook的平台上構建Facebook品牌客戶端的應用程序。 例如,Android和iOS應用程序將不會獲得此權限。 此外,不會向Web,桌面,車載和電視應用授予此權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM