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