Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
即使用户已授予权限,也无法从Facebook Android SDK 4.x获取电子邮件_Android_Facebook_Facebook Graph Api_Facebook Android Sdk - Fatal编程技术网

即使用户已授予权限,也无法从Facebook Android SDK 4.x获取电子邮件

即使用户已授予权限,也无法从Facebook Android SDK 4.x获取电子邮件,android,facebook,facebook-graph-api,facebook-android-sdk,Android,Facebook,Facebook Graph Api,Facebook Android Sdk,我想从Facebook Android SDK获取用户的电子邮件4.3.0 有很多关于它的问题,但标记的答案表明,有时用户可能不会授予权限 我正在使用我的Facebook acc进行测试,我已经授予了许可。我还是不能得到它 守则: public static final List<String> FACEBOOK_PERMISSIONS = Arrays.asList("public_profile", "email", "user_birthday"); @Override pu

我想从Facebook Android SDK获取用户的电子邮件
4.3.0

有很多关于它的问题,但标记的答案表明,有时用户可能不会授予权限

我正在使用我的Facebook acc进行测试,我已经授予了许可。我还是不能得到它

守则:

public static final List<String> FACEBOOK_PERMISSIONS = Arrays.asList("public_profile", "email", "user_birthday");

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState);
    callbackManager = CallbackManager.Factory.create();
    buttonLogin = (LoginButton) view.findViewById(R.id.button_fb_login);
    buttonLogin.setReadPermissions(AppConstants.FACEBOOK_PERMISSIONS);
    buttonLogin.setFragment(this);

    buttonLogin.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
        GraphRequestAsyncTask request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(JSONObject user, GraphResponse response) {
                if (user != null) {
                    Log.d("FacebookSDK", user.optString("email"));
                }
            }
        }).executeAsync();
    }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException error) {

        }
    });
}
public static final List FACEBOOK_PERMISSIONS=Arrays.asList(“public_profile”、“email”、“user_birth”);
@凌驾
已创建公用void onviewCreate(视图,@Nullable Bundle savedInstanceState){
super.onViewCreated(视图,savedInstanceState);
callbackManager=callbackManager.Factory.create();
buttonLogin=(LoginButton)view.findViewById(R.id.button\u fb\u login);
buttonLogin.setReadPermissions(AppConstants.FACEBOOK_权限);
buttonLogin.setFragment(此);
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
GraphRequestStatSyncTask请求=GraphRequest.NewMereRequest(loginResult.getAccessToken(),new GraphRequest.GraphJSONObjectCallback()){
@凌驾
未完成公共无效(JSONObject用户,GraphResponse响应){
如果(用户!=null){
Log.d(“FacebookSDK”,user.optString(“email”);
}
}
}).executeAsync();
}
@凌驾
公开作废{
}
@凌驾
public void onError(facebook异常错误){
}
});
}

我对4.3.0 SDK的Graph API版本表示怀疑,但您的建议可能会让我大吃一惊。

一如既往,我解决了自己的问题

我应该明确地把我想要的参数放在下面:

GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
    @Override
    public void onCompleted(JSONObject user, GraphResponse response) {
        if (user != null) {
            Log.d("FacebookSDK", user.optString("email"));
        }
    }
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email");
request.setParameters(parameters);
request.executeAsync();

由于API v2.4,您需要显式地请求要返回的字段。我看不到您在请求中的任何地方这样做来获取用户详细信息。您最好向我们展示如何在代码中显式请求字段@CBroe