Android的Facebook SDK:getFirstName()和getLastName()返回空字符串。

问题描述 投票:5回答:2

我正在使用Facebook SDK 3.5开发一个安卓本地应用程序。

我试图有一个自动完成tetextview,在那里我可以选择一些Facebook的朋友,为此我使用了一个newMyFriendsRequest,如下所示。

private void fbFriendsRequest(final Session session) {
    Request request = Request.newMyFriendsRequest(session, new Request.GraphUserListCallback() {
        @Override
        public void onCompleted(List<GraphUser> listFacebookFriends, Response response) {
            // If the response is successful
            if (session == Session.getActiveSession()) {
                if (listFacebookFriends != null) {
                    mAdapter = new GraphUserAdapter(FriendPicker.this, listFacebookFriends);
                    mAutoComplete.setAdapter(mAdapter);
                    Toast.makeText(FriendPicker.this,"Friends Loaded",Toast.LENGTH_SHORT).show();
                }
            }
            if (response.getError() != null) {
                // Handle errors, will do so later.
            }
        }
    });
    request.executeAsync();
}

然后每次用户从自动完成的extview中选择一行,我就把这行添加到另一个列表中,当我按下 "确定 "按钮时,我有:

public void onOkClick(View v) {
    if(mGraphUsersList.size()==0) {
        setResult(RESULT_CANCELED,null);    
    } else {
        Intent returnIntent = new Intent();
        Iterator<GraphUser> itr = mGraphUsersList.iterator();
        int n = mGraphUsersList.size();
        String[] idfb = new String[n];
        String[] names = new String[n];
        String[] lastnames = new String[n];
        int i = 0;
        while(itr.hasNext()) {
            GraphUser User = (GraphUser) itr.next();
            idfb[i]=User.getId();
            names[i]=User.getFirstName();    // problem
            lastnames[i]=User.getLastName(); // problem
            i++;
        }
        returnIntent.putExtra("idfb",idfb);
        returnIntent.putExtra("names",names);
        returnIntent.putExtra("lastnames",lastnames);
        setResult(RESULT_OK,returnIntent);     
    }
    finish();
}

当我使用getFirstName()和getLastName()函数时,我的字符串为空,但如果我使用getName()函数,则返回名字+姓氏。这就像在newMyFriendsRequest给出的列表中丢失了一些东西一样。

有谁知道这个问题的解决方法吗?

android facebook facebook-android-sdk
2个回答
10
投票

为了得到其他字段,除了 idname 的朋友,你需要在你的请求中明确地指定他们。

为此,请将它们添加到 Bundle 的要求一样。

Request request = Request.newMyFriendsRequest(session, new Request.GraphUserListCallback() {

    @Override
    public void onCompleted(List<GraphUser> listFacebookFriends, Response response) {
        // your code like you did
    }
}

// here add fields explicitly 
Bundle bundle = request.getParameters();
mBundle.putString("fields", "id,first_name,last_name");

// execute like you did
request.executeAsync();

这是你的一个解决方案,或者 另一个 是使用这个超级简单的库。android-simple-facebook


0
投票
                @Override
                public void onCompleted(JSONObject object, GraphResponse response) {

                    Profile profile = Profile.getCurrentProfile();
                    Log.d("fbEmail_id", profile.getFirstName());
                    String first_name=profile.getFirstName();
                    String last_name=profile.getLastName();
                }
© www.soinside.com 2019 - 2024. All rights reserved.