0

我正在制作我的应用程序,我需要从 Facebook 用户那里获取一些信息,我有性别和语言环境,但我不知道如何获取安装了该应用程序的朋友。到目前为止,这是我的代码:

public class FacebookUser {
private String gender, locale;
private FirebaseUser user;
private FirebaseAuth auth;
private Context context;



public FacebookUser(final Context context){
    gender=null;
    locale=null;
    this.context=context;
    auth=FirebaseAuth.getInstance();
    user=auth.getCurrentUser();

}
public void createUser(){
    FacebookSdk.sdkInitialize(context);
    GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(),
            new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(JSONObject object, GraphResponse response) {
                    try{
                        Log.e("RESPONSE: ",response.getRawResponse());
                        gender = object.getString("gender");
                        locale = object.getString("locale");
                        User currentUser = new User(user.getDisplayName(), user.getEmail(),locale, gender, null,User.UNDEFINED, CuboRubik.UNDEFINED, 0, 0 ,0.00000001F,context);
                        User.putUserInShared(currentUser, context);
                        AddToDatabase addToDatabase = new AddToDatabase(context);
                        addToDatabase.createUser(currentUser, context);
                    }catch(JSONException e){
                        e.printStackTrace();
                    }
                }
            });
    Bundle bundle = new Bundle();
    bundle.putString("fields", "locale,gender");
    request.setParameters(bundle);
    request.executeAsync();
}

这是获取朋友列表的尝试...

 private void friendGraphRequest(String friendListId){
    final String graphPath = "/"+friendListId+"/members/";
    AccessToken token = AccessToken.getCurrentAccessToken();
    GraphRequest request = new GraphRequest(token, graphPath, null, HttpMethod.GET, new GraphRequest.Callback() {
        @Override
        public void onCompleted(GraphResponse graphResponse) {
            JSONObject object = graphResponse.getJSONObject();
            try {
                JSONArray arrayOfUsersInFriendList= object.getJSONArray("data");
                /* Do something with the user list */
                /* ex: get first user in list, "name" */
                JSONObject user = arrayOfUsersInFriendList.getJSONObject(0);
                String usersName = user.getString("name");
                Log.e("USERNAME: ",""+usersName);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    });
    Bundle param = new Bundle();
    param.putString("fields", "name");
    request.setParameters(param);
    request.executeAsync();
}

我知道有些事情是错误的,但也许我可以使用其中的一些代码。谢谢!

4

1 回答 1

0

friendGraphRequest代码中,您访问friendListId/members的是旧 API 的一部分,用于访问“朋友列表”(Facebook 用户使用它来将他们的朋友组织到不同的列表中)——这可能不是您想要的

要访问用户的好友列表,API 调用是/<USER>/friendsor /me/friends简写)

这将返回也使用您的应用的用户朋友的姓名和 ID,以及所有用户朋友的计数(在summary响应中的键中)

如果您想保留已有的代码,请设置并从那里graphPath开始工作/me/friends

于 2018-06-16T18:45:24.257 回答