How to get Email after logging in to Facebook using Spring for Android Sample?

1

I'm using the Spring for Android Sample framework. The facebookProfile.getEmail () method does not display any information, the other methods, facebookProfile.getId () and getName () work perfectly. What's missing for you to get email information?

PS: Email permissions have already been entered.

public class FacebookProfileListAdapter extends BaseAdapter {
private FacebookProfile facebookProfile;
private final LayoutInflater layoutInflater;

public FacebookProfileListAdapter(Context context, FacebookProfile facebookProfile) {
    if (facebookProfile == null) {
        throw new IllegalArgumentException("facebookProfile cannot be null");
    }

    this.facebookProfile = facebookProfile;
    this.layoutInflater = LayoutInflater.from(context);
}

public int getCount() {
    return 3;
}

public String[] getItem(int position) {
    String[] item = new String[2];

    switch (position) {
    case 0:
        item[0] = "Id";
        item[1] = facebookProfile.getId();
        break;
    case 1:
        item[0] = "Name";
        item[1] = facebookProfile.getName();
        break;
    case 2:
        item[0] = "Email";
        item[1] = **facebookProfile.getEmail();**
        break;
    default:
        item[0] = "";
        item[1] = "";
        break;
    }

    return item;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    String[] item = getItem(position);
    View view = convertView;

    if (view == null) {
        view = layoutInflater.inflate(android.R.layout.two_line_list_item, parent, false);
    }

    TextView t = (TextView) view.findViewById(android.R.id.text1);
    t.setText(item[0]);

    t = (TextView) view.findViewById(android.R.id.text2);
    t.setText(item[1]);

    return view;
}

}

    
asked by anonymous 19.11.2015 / 15:21

1 answer

0

Do this as follows

String nome = Profile.getCurrentProfile().getName();
            String email;
            String URL = "https://graph.facebook.com/" + id + "?fields=email&access_token="
                    + token;

            HttpURLConnection urlConnection = null;
            BufferedReader reader;
            String resposta;
            try {
                java.net.URL url = new URL(URL);
                urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.connect();

                InputStream in = new BufferedInputStream(urlConnection.getInputStream());

                reader = new BufferedReader(new InputStreamReader(in));
                String line = "";
                StringBuilder buffer = new StringBuilder();
                while ((line = reader.readLine()) != null) {
                    buffer.append(line);
                }
                resposta = buffer.toString();
                JSONObject JODetails = new JSONObject(resposta);
                        if (JODetails.has("email")) {
                            email = JODetails.getString("email");
                        } else {
                            email = null;
                        }
                        Log.v("StatusLogin", nome);
                        Log.v("StatusLogin", email);

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

Remember to request access to the email at the time of login

LoginManager.getInstance().logInWithReadPermissions(
                    FazerCadastro.this, Arrays.asList("public_profile", "email"));
    
21.07.2017 / 01:14