问题
I'm working on android Login with Facebook After login i want to save the data from Facebook i want to save the following data from Facebook
- First Name
- Middle Name
- Last Name
- User id
- profile picture
- Profile Name
I tried some code which following
loginButton = (LoginButton)findViewById(R.id.login_button);
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions(Arrays.asList("public_profile", "email", "user_friends"));
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();
Profile profile = Profile.getCurrentProfile();
String userid = profile.getId();
String userfirstname = profile.getFirstName();
String middlename = profile.getMiddleName();
String userlastname = profile.getLastName();
Uri userimage = profile.getProfilePictureUri(30, 40);
String name = profile.getName();
}
@Override
public void onCancel() {
//info = ("Login attempt canceled.");
}
@Override
public void onError(FacebookException e) {
// info = ("Login attempt failed.");
}
});
From above code i successfully get other all but can't get email.
What i want
- I want to get user email
- I want to create a new json array for HTTP CALL to save the above data from user account.
回答1:
Try This It's Work For me
login.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
if (AccessToken.getCurrentAccessToken() != null) {
RequestData();
}
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException exception) {
}
});
private void RequestData() {
GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object,GraphResponse response) {
final JSONObject json = response.getJSONObject();
try {
if(json != null){
text = "<b>Name :</b> "+json.getString("name")+"<br><br><b>Email :</b> "+json.getString("email")+"<br><br><b>Profile link :</b> "+json.getString("link");
/*details_txt.setText(Html.fromHtml(text));
profile.setProfileId(json.getString("id"));*/
Log.e(TAG, json.getString("name"));
Log.e(TAG, json.getString("email"));
Log.e(TAG, json.getString("id"));
//web.loadData(text, "text/html", "UTF-8");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link,email,picture");
request.setParameters(parameters);
request.executeAsync();
}
//Get Profile Picture from id
public static Bitmap getFacebookProfilePicture(String userID){
try {
URL imageURL = new URL("https://graph.facebook.com/" + userID + "/picture?type=large");
Log.e(TAG,imageURL.toString());
try {
bitmap = BitmapFactory.decodeStream(imageURL.openConnection().getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
return bitmap;
}
来源:https://stackoverflow.com/questions/37183258/how-to-get-email-from-facebook-sdk-4-0