简体   繁体   中英

getting email address from facebook SDK For Android

I have integrated Facebook login in my application .i get other profile information but can't get the email from the sdk.is it possible?

public void getProfileInformation_fb() {
        mAsyncRunner.request("me", new RequestListener() {
            @Override
            public void onComplete(String response, Object state) {

                String json = response;
                try {
                    JSONObject profile = new JSONObject(json);
                    // getting name of the user

                    final String name = profile.getString("name");
                    // getting email of the user
                    final String email = profile.getString("email");

                    final String id = profile.getString("id");


                    Log.i("ID , Name", ""+id+ ""+name);

                    Log.i("Email", ""+email);


                    runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            Log.i("Face Book", "" + email);
                        }

                    });

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

            @Override
            public void onIOException(IOException e, Object state) {
            }

            @Override
            public void onFileNotFoundException(FileNotFoundException e,
                    Object state) {
            }

            @Override
            public void onMalformedURLException(MalformedURLException e,
                    Object state) {
            }

            @Override
            public void onFacebookError(FacebookError e, Object state) {
            }
        });
    }

This code id working for me.

  LoginManager.getInstance().registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        // App code
                        accessToken = loginResult.getAccessToken();


                        GraphRequest request = GraphRequest.newMeRequest(
                                accessToken,
                                new GraphRequest.GraphJSONObjectCallback() {
                                    @Override
                                    public void onCompleted(
                                            JSONObject object,
                                            GraphResponse response) {
                                        // Application code

                                        try {

 String name = object.getString("name");
                    String birthday = object.getString("birthday");
                    String gender = object.getString("gender");
                    String email = object.getString("email");
                    String picture = object.getString("picture");






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










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







                    }

                    @Override
                    public void onCancel() {
                        // App code
                        Log.e("fb", "cancel ");
                        LoginManager.getInstance().logOut();
                    }

                    @Override
                    public void onError(FacebookException exception) {
                        // App code
                        Log.e("fb", "error " + exception);
                        LoginManager.getInstance().logOut();
                    }
                });
public class FbLogin extends Activity{


CallbackManager callbackManager;


private static final String NAME = "name";
private static final String ID = "id";
private static final String PICTURE = "picture.type(large)";
private static final String EMAIL = "email";
private static final String FIELDS = "fields";

private static final String REQUEST_FIELDS =
        TextUtils.join(",", new String[]{ID, NAME, EMAIL, PICTURE});



Bitmap mIcon1 = null;
 String imgUrl = "";
 String id = "";
 String name = "";
 String email = "";




@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login_type);



     callbackManager = CallbackManager.Factory.create();


    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {



            fetchUserInfo();

        }

        @Override
        public void onCancel() {


        }

        @Override
        public void onError(FacebookException e) {



        }
    });

        btnFb.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            LoginManager.getInstance().logInWithReadPermissions(Activity_LoginType.this, Arrays.asList("public_profile", "user_friends","email"));
        }
    });


}




private void fetchUserInfo() {
    final String PERMISSION = "publish_actions";
    final AccessToken accessToken = AccessToken.getCurrentAccessToken();
    if (accessToken != null) {
        GraphRequest request = GraphRequest.newMeRequest(
                accessToken, new GraphRequest.GraphJSONObjectCallback() {

                    @Override
                    public void onCompleted(JSONObject object,
                            GraphResponse response) {
                        // TODO Auto-generated method stub



                            parseUserInfo(object);



                    }
                });
        Bundle parameters = new Bundle();
        parameters.putString(FIELDS, REQUEST_FIELDS);
        request.setParameters(parameters);
        GraphRequest.executeBatchAsync(request);

        LoginManager.getInstance().logInWithPublishPermissions(
                this,
                Arrays.asList(PERMISSION));
    } else {


    }
}

private void parseUserInfo(JSONObject me) {



    try {
        id = me.getString("id");
        name = me.getString("name");
        email = me.getString("email");
        imgUrl = me.getJSONObject("picture").getJSONObject("data").getString("url");


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


}






@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    try {
        callbackManager.onActivityResult(requestCode, resultCode, data);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

and add

FacebookSdk.sdkInitialize(getApplicationContext());

in application class. and add below code in manifest file

<meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/fb_id" />


        <activity
        android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM