2015-07-09 2 views
0

Я пишу приложение, чтобы получить все данные группы, к которым сейчас присоединяется пользователь. Но я не знаю, почему он работает только для моей учетной записи facebook (владелец приложения тоже), для другой учетной записи, список возвращает null.Java: получить список групп на facebook с помощью RestFB

Это код я использую для создания URL для пользователя, чтобы войти в

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"; 
} 

ответ

1

Разрешение user_group - расширенное разрешение. Поэтому, чтобы использовать его с другим пользователем, чем администратор/тестировщик/разработчик соответствующего приложения, приложение должно пройти под управлением входа в систему.

См

Но вы будете иметь проблемы здесь:

Это разрешение предоставляется приложениям, создающим клиент под брендом Facebook на платформах, где Facebook еще не доступен. Например, приложения Android и iOS не будут одобрены для этого разрешения. Кроме того, веб-приложениям, рабочим столам, автомобильным и телевизионным приложениям не будет предоставлено это разрешение.

+0

поэтому ... могу ли я использовать разрешение user_groups после отправки отзыва на Facebook? @Tobi –

+0

Вы не получите его одобренным, если вы создаете приложение для одной из упомянутых платформ. – Tobi

+0

Разрешение 'user_groups' будет полностью удалено_ во вторник, 6 октября 2015 г. - https://developers.facebook.com/docs/apps/changelog#v2_4_deprecations – CBroe

Смежные вопросы