无法在android

时间:2018-05-02 10:15:38

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

  • 我无法在OnCompleted函数
  • 中获取性别
  • 我可以获得其他参数,例如idnameemail
  • 目前应用处于开发模式

这是昨天的工作。

代码:

GraphRequest request = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(),
                        new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(JSONObject object, GraphResponse response) {
                                Log.v("LoginActivity", response.toString());
                                try {

                                    AccessToken token = AccessToken.getCurrentAccessToken();
                                    String accessToken = token.getToken().toString();
                                    String expiresAt = token.getExpires().toString();
                                    String id = object.getString("id");
                                    String gender = object.getString("gender");

                                } catch (JSONException e) {
                                    e.printStackTrace();
                                    System.out.println(e.toString());
                                }

                            }
                        });

                Bundle parameters = new Bundle();
                parameters.putString("fields", "id, name, email, gender, location, picture.type(large)");
                request.setParameters(parameters);
                request.executeAsync();

2 个答案:

答案 0 :(得分:4)

在您的https://developers.facebook.com/帐户的应用程序审核部分下,单击开始提交,然后从登录中选择 user_gender 权限,然后执行提交步骤。

facebook批准 user_gender 权限后,您可以使用它。

再次在开发人员帐户中单击设置,然后单击高级,并在升级API版本中 将您的应用程序调用的API版本更改为 v3.1 ,并使用以下代码,您将获得用户的性别。

private void attemptToLogIn() {
   LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email", "user_gender"));
   LoginManager.getInstance().registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        makeGraphRequest(loginResult.getAccessToken());
                    }

                    @Override
                    public void onCancel() {
                    }

                    @Override
                    public void onError(FacebookException error) {

                    }
                });
    }

    public void makeGraphRequest(AccessToken token) {
        GraphRequest request = GraphRequest.newMeRequest(
                token, (object, response) -> {
                    try {
                        String gender = object.getString("gender");
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                });
        Bundle parameters = new Bundle();
        parameters.putString("fields", "name,gender");
        request.setParameters(parameters);
        request.executeAsync();
    }

答案 1 :(得分:0)