Facebook API - 生日没有价值

时间:2015-06-01 17:54:11

标签: android facebook

我正试图从用户那里得到生日,但我收到了这个错误:

  

06-01 17:43:05.683:W / System.err(15173):org.json.JSONException:No   生日值

我尝试使用两个帐户登录我的应用程序,我只能从第一个帐户获得生日。

我的代码:

loginButton = (LoginButton) findViewById(R.id.login_button);
            List<String> permissionNeeds = Arrays.asList("user_photos", "email", "user_birthday");
            loginButton.setReadPermissions(permissionNeeds);

            loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>()
            {
                @Override
                public void onSuccess(LoginResult loginResult)
                {
                    System.out.println("onSuccess");
                    GraphRequest request = GraphRequest.newMeRequest
                            (loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback()
                            {


                                @Override
                                public void onCompleted(JSONObject object,
                                        GraphResponse response) {
                                    // TODO Auto-generated method stub
                                     // Application code
                                    Log.v("LoginActivity", response.toString());
                                    //System.out.println("Check: " + response.toString());
                                    try
                                    { 
                                        String id = object.getString("id");
                                        String name = object.getString("name");
                                        String email = object.getString("email");
                                        String gender = object.getString("gender");
                                        String birthday = object.getString("birthday");
                                        String getgender = "";

                                        if(getgender.equals("male")){
                                          getgender = "2";
                                        }else{
                                          getgender = "1";
                                        }

                                        facebookLogin(email, name, getgender);

                                    Log.e("", birthday);
                                    }
                                    catch (JSONException e)
                                    { 
                                        e.printStackTrace();
                                    } 
                                }
                            });
                    Bundle parameters = new Bundle();

                    parameters.putString("fields", "id,name,email,gender,birthday");
                    request.setParameters(parameters);
                    request.executeAsync();
                }

感谢。

2 个答案:

答案 0 :(得分:0)

这基本上是因为你需要让Facebook审查获得用户b'day的许可。您可以访问您的b'date但不能访问其他人。

参考此链接

developer.facebook.com

在你的facebook仪表板上转到评论中的项目,然后从那里添加权限和Facebook验证将开始之后,您将能够获得用户b'date 截图] enter image description here

答案 1 :(得分:0)

在这种情况下,您必须检查json是否包含值。

 JSONObject jObj = new JSONObject(json);
    if(jObj.has("birthday"){
    birthday = jObj.getString("birthday");
    }