如何在GraphRequest.newMeRequest上获取用户电子邮件

我的 Android应用程序中有一个Facebook登录选项,我试图让用户的电子邮件失败.
用户登录后,并添加到Parse.com用户表(带有有效的访问令牌),我请求Facebook用户信息,但只获取它的ID和名称(即使该电子邮件被设置为其中一个权限).

这是我的代码(在我的按钮的OnClickListener中):

ParseFacebookUtils.logInWithReadPermissionsInBackground(
    getActivity(),Arrays.asList("email","user_friends"),new LogInCallback() {
        @Override
        public void done(ParseUser user,ParseException err) {
            //err is null

            if (user == null) {
                Log.d(TAG,"Uh oh. The user cancelled the Facebook login.");
            } else {
                GraphRequest.newMeRequest(
                    Accesstoken.getCurrentAccesstoken(),new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject user,GraphResponse response) {

                            Log.d(TAG,"user = " + user.toString());
                            //prints -> user = {"name":"my_fb_name","id":"my_fb_id"}
                        }
                    }
                ).executeAsync();                
           }
       });

解决方法

我想这与Graph API v2.4中的更改有关,因此您必须指定要从Graph API返回的每个字段.

看看我的回答

> Facebook only returning name and id of user

对此

关于你的实际问题,请参阅

> https://developers.facebook.com/docs/android/graph#userdata

有关如何为GraphRequest指定字段的示例

GraphRequest request = GraphRequest.newMeRequest(
        accesstoken,new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(
                   JSONObject object,GraphResponse response) {
                // Application code
            }
        });
Bundle parameters = new Bundle();
parameters.putString("fields","id,name,email");
request.setParameters(parameters);
request.executeAsync();

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...