即使用户已授予权限,也无法从Facebook Android SDK 4.x获取电子邮件
我想从Facebook Android SDK获取用户的电子邮件即使用户已授予权限,也无法从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
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