无法通过Facebook登录获得电子邮件

时间:2018-02-09 13:00:38

标签: android facebook facebook-graph-api

无法通过Facebook登录获取电子邮件,虽然我们获得了accessstoken,id,name但电子邮件为null甚至代码中也提到了电子邮件的许可,我们是否已经从facebook开发者控制台设置了电子邮件权限。 根据{{​​3}},。

按照设置
public class MainActivity extends AppCompatActivity {
CallbackManager callbackManager;
private static final String EMAIL = "email";
String Email = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    callbackManager = CallbackManager.Factory.create();

    LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
    //loginButton.setReadPermissions(Arrays.asList(EMAIL));
    // If you are using in a fragment, call loginButton.setFragment(this);
    // Callback registration
    LoginManager loginManager = LoginManager.getInstance();
    loginManager.logInWithReadPermissions(MainActivity .this, Arrays.asList(EMAIL));
    loginManager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
            Log.e("Facebook_loginResult", loginResult.getAccessToken().getToken());
            GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(JSONObject object, GraphResponse response) {
                    try {
                        Log.e("Login_FB_Response", object.toString());

                        if (object.has("email")) {
                             Email = object.getString("email");
                        }
                        Log.e("Login_FB_Email", Email);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            });

            Bundle parameters = new Bundle();
            parameters.putString("fields", "id, first_name, last_name, email, birthday, gender, location");
            request.setParameters(parameters);
            request.executeAsync();
        }

        @Override
        public void onCancel() {
            // App code
            Log.e("Facebook_Cancel", "onCancel");
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
            Log.e("Facebook_Exception", exception.getMessage());
        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    callbackManager.onActivityResult(requestCode, resultCode, data);
    super.onActivityResult(requestCode, resultCode, data);
}}

0 个答案:

没有答案
相关问题