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

前端之家收集整理的这篇文章主要介绍了如何在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相关文章