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

Asked

Viewed 72 times

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 to get email information?

PS: Email permissions have also 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;
}

}

  • Is this the content of the.xml file that I use to release the permissions <? xml version="1.0" encoding="utf-8"? > <Resources> <string name="facebook_app_id">xxxxxxxxxxxxxx</string> <string name="facebook_app_secret">xxxxxxxxxxxxxxxx</string> <string name="facebook_oauth_callback_url">https://www.facebook.com/connect/login_success.html</string> <string name="facebook_scope">"public_profile,user_about_me,email,user_friends,user_photos,user_birthday"</string> </Resources>

  • VERSIONS: Spring: Compile 'org.springframework.android:spring-android-Rest-template:2.0.0.M1' JDK: jdk1.8.0_60 API Android: 19 Android 4.4 (Kitkat)

1 answer

0

Do it this way

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 Login time

LoginManager.getInstance().logInWithReadPermissions(
                    FazerCadastro.this, Arrays.asList("public_profile", "email"));

Browser other questions tagged

You are not signed in. Login or sign up in order to post.