Android Facebook登录获取电子邮件

时间:2017-11-17 02:51:37

标签: android facebook-graph-api

我有一个简单的应用程序与Facebook登录按钮,并显示用户信息。我试图获取用户的电子邮件,使用了很多方法,但它返回一个空值。如何让用户收到电子邮件?

loginButton=(LoginButton)findViewById(R.id.loginButton);
loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));
callbackManager= CallbackManager.Factory.create();
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {
        loginButton.setVisibility(View.GONE);
        //how to get user email here
        finish();
    }

    @Override
    public void onCancel() {
        Toast.makeText(PopUpFaceBook.this,"تم الغاء تسجيل الدخول",Toast.LENGTH_SHORT).show();
        finish();
    }

    @Override
    public void onError(FacebookException error) {
        Toast.makeText(PopUpFaceBook.this,"هناك مشكلة فى تسجيل الدخول حاول مجددا",Toast.LENGTH_SHORT).show();
        finish();
    }
});

2 个答案:

答案 0 :(得分:1)

onSuccess()回调方法中使用以下代码:

LoginResult loginR = loginResult;
// App code
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
    @Override
    public void onCompleted(JSONObject object, GraphResponse response) {
        Log.v("LoginActivity", response.toString());
        // Application code
        try {
            String email  = object.getString("email");
            String birthday = object.getString("birthday");
            String gender = object.getString("gender");
            String name = object.getString("name");
            // 01/31/1980 format
        } catch (JSONException ex) {
            Log.d("JSonExceptioin", ex.toString());
        }
    }
});
Bundle parameters = new Bundle();
parameters.putString("fields","id,name,email,gender,birthday,picture,timezone");
request.setParameters(parameters);
request.executeAsync();

答案 1 :(得分:0)

您可以使用Firebase,这将真正帮助您获取Facebook个人资料的所有信息,例如: 1.电子邮件 2.姓名 3.个人资料照片等

按照以下链接中的步骤操作:

https://firebase.google.com/docs/auth/android/facebook-login

由于