2014-10-02 89 views
0
Session.openActiveSession(MainActivity.this, true, permissions, 

      new Session.StatusCallback() { 

       // callback when session changes state 
       @Override 
       public void call(Session session, SessionState state, 
         Exception exception) { 
        if (session.isOpened()) { 

         Request.newMeRequest(session, 
           new GraphUserCallback() { 

            @Override 
            public void onCompleted(GraphUser user, 
              Response response) { 
             if (user != null) { 
              TextView welcome = (TextView) findViewById(R.id.textView1); 
              welcome.setText("Hello " 
                + user.getName() + "!"); 
             } 

            } 
           }).executeAsync(); 


         // make request to the /me API 
         // when i add this code, it's crash 

         new Request(session, "/me", null, 
           HttpMethod.GET, new Request.Callback() { 
            public void onCompleted(
              Response response) { 
             Toast.makeText(
               getApplicationContext(), 
               response.getGraphObjectList() 
                 .size() 
                 + "", 
               Toast.LENGTH_SHORT).show(); 
            } 
           }); 
         Request.executeMeRequestAsync(session, null); 

        } 
       } 
      }); 
+0

崩溃?你有堆栈跟踪吗? – WizKid 2014-10-02 20:40:38

回答

2

它为me.this是对于那些谁想要显示FB好友列表中的列表视图或获得friendslist没有对话框

final Session sessionfb = ParseFacebookUtils.getSession();// user facebook session. 
     List<String> permissions = sessionfb.getPermissions(); 

      if (!permissions.contains("user_friends")) { 

       Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(
         FlyTags.this, Arrays.asList("user_friends")) 
         .setCallback(newPermissionsCallback).setRequestCode(1); 

       sessionfb.requestNewPublishPermissions(newPermissionsRequest); 
} else 
{ 
     requestFacebookFriends(sessionfb); 

} 

//添加onanctivityResult和NewPermissionsRequest获得相应的许可,并返回一个会话以上方法。

requestFacebookFriends(sessionfb);

private void requestFacebookFriends(Session session2) { 
    // TODO Auto-generated method stub 

    Request friendsRequest = createRequest(session); 
    friendsRequest.setCallback(new Request.Callback() { 

     @Override 
     public void onCompleted(Response response) { 

//做你想做... 名单朋友= getResults(响应); // fbgraph列表中的用户 parseUserFromFQLResponse(响应); // JSON方法

 } 
    }); 
    friendsRequest.executeAsync(); 

} 

的createRequest

private Request createRequest(Session session2) { 
     // TODO Auto-generated method stub 
     Request request = Request.newGraphPathRequest(session, "me/friends", 
       null); 

     Set<String> fields = new HashSet<String>(); 
     String[] requiredFields = new String[] { "id", "name", "picture" }; 
     fields.addAll(Arrays.asList(requiredFields)); 

     Bundle parameters = request.getParameters(); 
     parameters.putString("fields", TextUtils.join(",", fields)); 
     request.setParameters(parameters); 

     return request; 
    } 

parseUserFro mFQLResponse(响应响应)

protected void parseUserFromFQLResponse(Response response) { 
    // TODO Auto-generated method stub 

    try { 
     GraphObject go = response.getGraphObject(); 
     JSONObject jso = go.getInnerJSONObject(); 
     JSONArray arr = jso.getJSONArray("data"); 

     for (int i = 0; i < (arr.length()); i++) { 
      JSONObject json_obj = arr.getJSONObject(i); 
      FbFriend fbobject = new FbFriend();// object class 
      String id = json_obj.getString("id"); 
      fbobject.uid = id; 
      String name = json_obj.getString("name"); 
      fbobject.name = name; 
      String urlImg = json_obj.getJSONObject("picture").getJSONObject("data").getString("url"); 

      fbobject.pictureUrl = urlImg; 

      friendslist.add(fbobject);// friendslist is arralist of Fbfriend 
     } 
    } catch (Throwable t) { 
     t.printStackTrace(); 
    } 

} 

如图表结果

protected List<GraphUser> getResults(Response response) { 
      // TODO Auto-generated method stub 
      GraphMultiResult multiResult = response 
        .getGraphObjectAs(GraphMultiResult.class); 
      GraphObjectList<GraphObject> data = multiResult.getData(); 
      return data.castToListOf(GraphUser.class); 
     }