为什么我不能从 GraphRequest 中获取用户的名字?

JTM*_*JTM 1 android facebook-graph-api facebook-login

我希望用户能够使用 Facebook 注册我的 Android 应用程序SDK。为了获取他们的信息,我正在GraphRequest使用“ email”和“ public_profile”权限执行 a 。根据此页面,用户的名字和姓氏应该可以在“ first_name”和“ last_name”字段中访问。但是,当我单击该按钮时,我收到一条错误消息,指出 first_name 没有值。JSON返回的数组如下:

{"name":"First M. Last","id":"1234567890123456"}
Run Code Online (Sandbox Code Playgroud)

我还没有提交我的应用程序以供审核,因为它尚未完成。这可能与这个问题有关吗?

小智 5

根据官方文件,您访问 public_profile 权限的登录信息应如下所示:

 LoginManager.getInstance().logInWithReadPermissions(Login.this, Arrays.asList("public_profile", "email"));
Run Code Online (Sandbox Code Playgroud)

要获取个人资料信息:

 private void getFbDetails(final AccessToken accessToken) {
        GraphRequest request = GraphRequest.newMeRequest(accessToken,
                new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(
                            JSONObject object,
                            GraphResponse response) {

                     //   Toast.makeText(Login.this, object.toString(), Toast.LENGTH_LONG).show();
                        Log.v("FB Details", object.toString());
                        if (object != null) {
                            name_fb = object.optString("name");
                            email_fb = object.optString("email");
                        }
                    }
                });
        Bundle parameters = new Bundle();
        parameters.putString("fields", "id,name,first_name, last_name, email,link");
        request.setParameters(parameters);
        request.executeAsync();
    }
Run Code Online (Sandbox Code Playgroud)