Facebook Graph对象没有返回android中的值

时间:2014-03-24 09:32:43

标签: android facebook facebook-graph-api facebook-android-sdk

我想在Facebook上显示应用中的用户详细信息, 这是代码:

private String buildUserInfoDisplay(GraphUser user) {

        StringBuilder userInfo = new StringBuilder("");

        userInfo.append(String.format("Name: %s\n\n", 
            user.getName()));
        userInfo.append(String.format("Birthday: %s\n\n", 
            user.getBirthday()));
        userInfo.append(String.format("Location: %s\n\n", 
            user.getLocation().getProperty("name")));
        userInfo.append(String.format("Locale: %s\n\n", 
            user.getProperty("locale")));
        //JSONArray languages = (JSONArray)user.getProperty("languages");
        GraphObjectList<MyGraphLanguage> languages = 
                (user.cast(MyGraphUser.class)).getLanguages();
        if (languages.size() > 0) {
            ArrayList<String> languageNames = new ArrayList<String> ();

                for (MyGraphLanguage language : languages) {
                    languageNames.add(language.getName());
                }         
            userInfo.append(String.format("Languages: %s\n\n", 
            languageNames.toString()));
        }

        return userInfo.toString();
    }

private void onSessionStateChange(Session session, SessionState state,Exception exception) 
{

        if (state.isOpened()) {
            userInfoTextView.setVisibility(View.VISIBLE);
            Settings.addLoggingBehavior(LoggingBehavior.REQUESTS);
            Request.newMeRequest(session, new Request.GraphUserCallback(){

                @Override
                public void onCompleted(GraphUser user, Response response) {
                    // TODO Auto-generated method stub
                    if (user != null) {
                        // Display the parsed user info

                        userInfoTextView.setText(buildUserInfoDisplay(user));
                    }
                }}).executeAsync();

            Log.i(TAG, "Logged in...");
        } else if (state.isClosed()) {
            userInfoTextView.setVisibility(View.INVISIBLE);
            Log.i(TAG, "Logged out...");
        }
    }

提前感谢..

1 个答案:

答案 0 :(得分:0)

在声明并初始化您的Facebook LoginButton后添加以下代码,

YOUR_Facebook_Loginbutton.setReadPermissions(Arrays.asList("user_location", "user_birthday", "user_likes"));

否则,请检查您是否在个人资料中添加了语言信息。 如果用户没有数据,则必须为null。 您可以在fb'关于'页面 - &gt;中查看语言信息。联系方式和基本信息

希望这可以帮到你! 参考:https://developers.facebook.com/docs/android/graph#userdata