Profile.getCurrentProfile()仅返回我的个人资料,其余全部为空

时间:2016-04-12 10:10:00

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

我正在尝试构建一个简单的登录到Facebook应用程序(使用FB api v4.0)并检索有关用户的一些数据,但由于某种原因我成功登录并仅从我个人的Facebook个人资料中获取数据,如果试图用其他用户配置文件登录我得到null。 (我将facebook开发者的设置更改为公共应用程序。)

这是我的一些loginButton_Fragment:

private CallbackManager callbackManager;
private FacebookCallback<LoginResult> facebookCallback = new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {
        AccessToken accessToken = loginResult.getAccessToken();
        Profile profile = Profile.getCurrentProfile();
        Log.d("koko",accessToken.toString() );

        if (profile != null){
            GraphRequest request = GraphRequest.newMeRequest(
                    accessToken,
                    new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(
                                JSONObject object,
                                GraphResponse response) {
                            try {
                                user_birthDay = object.getString("birthday");
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    });
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id,name,birthday");
            request.setParameters(parameters);
            request.executeAsync();
            user_name = profile.getName();
            user_id = profile.getId();
            Log.d("koko","first " +user_name + " " + user_id + " " + user_birthDay );
            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    comm.respone(user_name, user_id, user_birthDay);
                }
            }, 500);
        }
    }
    @Override
    public void onCancel () {
    }
    @Override
    public void onError (FacebookException e){
    }
};

每次登录时,我都会进入onSuccess,但如果它不是我的个人资料,那么该资料就是null。

2 个答案:

答案 0 :(得分:0)

您需要从Facebook获取应用程序特定权限,以便通过提交审核来检索用户个人信息,例如birthdayuser_friends等。

投资一些时间here

如果您的应用请求此类权限,Facebook必须审核您的应用如何使用它。

默认情况下,您将获得public_profile

检查this&amp; this

答案 1 :(得分:0)

设置读取权限 oTable = $('#mylist').dataTable({ "dom": "<'row no-gutters'<'col-md-4'l><'col-md-4'r><'col-md-4'f>>t<'row no-gutters'<'col-md-4'i><'col-md-4'><'col-md-4'p>>", "processing": true, "serverSide": true, "ajax": "{{ URL('product/list') }}", "columnDefs": [ {"orderable": false, "targets": [3, 4]}, ], "order": [[0, "asc"]] });

试试这个

mButtonLogin.setReadPermissions(Arrays.asList("email,public_profile","user_birthday"));