2016-07-27 52 views
1

Ich versuche, FB Freundesliste zu bekommen. Ich weiß, dass es nur diejenigen zurückgibt, die auch die App benutzen.Wie bekomme ich Facebook Freundesliste in der Verwendung von Spring Social

Ich machte REST Punkt, der Freundesliste zurückgeben sollte. Hier ist Code für Tests geändert:

@RequestMapping(value = "/fbfriends", 
    method = RequestMethod.GET, 
    produces = MediaType.APPLICATION_JSON_VALUE) 
@Timed 
public List<User> GetFriends(Connection<?> connection) { 
    log.debug("REST request to get all Friends"); 
    if (connection == null) { 
     log.error("Cannot create social user because connection is null"); 
     throw new IllegalArgumentException("Connection cannot be null"); 
    } 
    log.debug("Got connection"); 

    List<Permission> permissions = facebook.userOperations().getUserPermissions(); 
    log.debug("Permission size: " + permissions.size() + " Permission: " + permissions); 
    for (Permission perm: permissions){ 
     log.debug(perm.getName() + " " + perm.getStatus()); 
    } 

    List<User> friends = facebook.friendOperations().getFriendProfiles(); 
    log.debug("Friends size: " + friends.size() + " Friends:" + friends.toString()); 

    PagedList<Post> feed = facebook.feedOperations().getFeed(); 
    log.debug("Feed size: " + feed.size() + " Feed: " + feed.toString()); 

    PagedList<UserTaggableFriend> taggable = facebook.friendOperations().getTaggableFriends(); 
    log.debug("Taggable size: " + friends.size() + " Taggable:" + friends.toString()); 

    log.debug("Ho Ho Ho"); 

    return friends; 
} 

Alle, log.debug nur für mich, hier ist das Ergebnis:

2016-07-27 17:38:22.443 DEBUG 10828 --- [nio-8080-exec-1] c.m.myapp.aop.logging.LoggingAspect  : Exit: org.springframework.social.connect.ConnectionRepository.findPrimaryConnection() with result = [email protected]b877 
2016-07-27 17:38:22.581 DEBUG 10828 --- [nio-8080-exec-1] c.m.myapp.web.rest.FbFriendResource  : Permission size: 2 Permission: [[email protected], [email protected]] 
2016-07-27 17:38:22.581 DEBUG 10828 --- [nio-8080-exec-1] c.m.myapp.web.rest.FbFriendResource  : email granted 
2016-07-27 17:38:22.581 DEBUG 10828 --- [nio-8080-exec-1] c.m.myapp.web.rest.FbFriendResource  : public_profile granted 
2016-07-27 17:38:22.694 DEBUG 10828 --- [nio-8080-exec-1] c.m.myapp.web.rest.FbFriendResource  : Friends size: 0 Friends:[] 
2016-07-27 17:38:22.739 DEBUG 10828 --- [nio-8080-exec-1] c.m.myapp.web.rest.FbFriendResource  : Feed size: 0 Feed: [] 
2016-07-27 17:38:22.788 DEBUG 10828 --- [nio-8080-exec-1] c.m.myapp.web.rest.FbFriendResource  : Taggable size: 0 Taggable:[] 
2016-07-27 17:38:22.789 DEBUG 10828 --- [nio-8080-exec-1] c.m.myapp.web.rest.FbFriendResource  : Ho Ho Ho 
2016-07-27 17:38:22.798 DEBUG 10828 --- [nio-8080-exec-1] c.m.myapp.aop.logging.LoggingAspect  : Exit: com.mycompany.myapp.web.rest.FbFriendResource.GetFriends() with result = [] 

Wie man dort sehen kann, ist nur zwei Berechtigungen erteilt: public_profile und email.

In einigen Beispielen fand ich, dass Berechtigungen hinzugefügt werden könnten: enter image description here

ich so nichts gefunden. In meiner App-Einstellungen fand ich diese Seite unter „App Review“

enter image description here

Hier user_friends „live und für die Nutzer“

  1. Was ich falsch gemacht haben oder wie eigentlich diese "verwenden, standardmäßig gewährt "Erlaubnis mit Spring Social?
  2. Wie kann ich zusätzliche Berechtigungen wie user_posts anfordern und sie in Spring Framework verwenden?
+1

Es werden nur diejenigen Freunde zurückgegeben, die user_friends die Berechtigung für die App erteilt haben. Meine Vermutung ist, dass Sie nicht danach fragen – WizKid

+0

Ich verstehe, dass es nur diese Benutzer zurückgibt. Ich habe 3-4 Benutzer, die FB-Login in meiner App verwendet haben. Wie im zweiten Screenshot gezeigt, gibt es "user_friends" in "approved items", aber es gibt diese Berechtigung nicht über die Methode "facebook.userOperations(). GetUserPermissions()" zurück. Ich frage, wie man diese Erlaubnis verwendet (die vermutlich standardmäßig gewährt wird) und neue Erlaubnis bittet/hinzufügt. –

+1

Sie lesen die Facebook-Login-Dokumentation, wie Sie um Erlaubnis fragen – WizKid

Antwort

1

Die Lösung für mein Problem war ziemlich einfach. Wenn jemand die gleichen Probleme hat, werden die Berechtigungen für die App in der Facebook-Login-Taste an die FB definiert.

So etwas hängt von Ihrem Fall ab.

<fb:login-button scope="public_profile,email,user_friends" onlogin="checkLoginState();"> 
</fb:login-button> 

War neu zu diesem und nur Beispielcode für Login-Button ohne Überprüfung verwendet und thoght diese Berechtigungen bei App-Einstellungen definiert.

+0

bitte helfen, leer zu werden kein Foto. versucht, in Link hinzuzufügen, aber kein Vorteil nur Benutzer, die Foto autorisiert hat, kommt meine Seite http://way2enjoy.com/facebook-fun – Steeve

+0

PLZ Hilfe, wenn Sie helfen können – Steeve