Try this Code I hope Its Work..
facebookimage(object.getString("id"));
This is Method:
private void facebookimage(String id) {
new getFacebookImage(id).execute();
}
This is AsyncTask class to get Profile Image on Facebook ;
private class getFacebookImage extends AsyncTask {
String userID;
Bitmap camera;
public getFacebookImage(String id) {
userID=id;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Object doInBackground(Object[] params) {
URL imageURL = null;
Bitmap bitmap=null;
try {
imageURL = new URL("https://graph.facebook.com/" + userID + "/picture?type=large");
bitmap = BitmapFactory.decodeStream(imageURL.openConnection().getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Log.e("String Image",""+bitmap);
camera=bitmap;
return bitmap;
}
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
if(camera != null){
Log.e("Image Load","UPload image");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
camera.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte imageInByte[] = stream.toByteArray();
String encodedImage = Base64.encodeToString(imageInByte, Base64.DEFAULT);
DataBase.setUserImage(LoginActivity.this,encodedImage);
}
}
}
Answer from Abhinav singh on Stack OverflowTry this Code I hope Its Work..
facebookimage(object.getString("id"));
This is Method:
private void facebookimage(String id) {
new getFacebookImage(id).execute();
}
This is AsyncTask class to get Profile Image on Facebook ;
private class getFacebookImage extends AsyncTask {
String userID;
Bitmap camera;
public getFacebookImage(String id) {
userID=id;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Object doInBackground(Object[] params) {
URL imageURL = null;
Bitmap bitmap=null;
try {
imageURL = new URL("https://graph.facebook.com/" + userID + "/picture?type=large");
bitmap = BitmapFactory.decodeStream(imageURL.openConnection().getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Log.e("String Image",""+bitmap);
camera=bitmap;
return bitmap;
}
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
if(camera != null){
Log.e("Image Load","UPload image");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
camera.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte imageInByte[] = stream.toByteArray();
String encodedImage = Base64.encodeToString(imageInByte, Base64.DEFAULT);
DataBase.setUserImage(LoginActivity.this,encodedImage);
}
}
}
Initially I was getting only id and email in JSONObject object of onCompleted. Even though I set permissions like "public_profile" and "email" which is sufficient enough to get the id, name, email and profile picture from facebook. But somewhere I went wrong and didn't understand and added Profile and did getProfile() so I can get the name and profile picture. Then other problem arised was even after login perfectly, I was getting null profile sometimes(may be once in 5 times). For that had to put Profile Tracker and this was because Profile works Asynchronously(was too confusing for me as you have to put trackers and start & stop tracking).
Then I realized where I went wrong. In the bundle where we need to mention what all we want in the json object as reply, I had only mentioned "id". So now in the below code I added "name" and "email" as well. So in the JSONObject object response I get the name and email as well.
And for profile picture I saw How can I display the users profile pic using the facebook graph api? and implemented this using Uri builder Use URI builder in Android or create URL with variables . So with this I removed the use of Profile completely and still getting all the data I wanted.
This answer is the mixture of both the answers mentioned by Destro - Android Facebook Login- Profile is null & How to get email id From Android Facebook SDK 4.6.0?
FacebookCallback<LoginResult> facebookCallback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(final LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
if (BuildConfig.DEBUG) {
FacebookSdk.setIsDebugEnabled(true);
FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
String uid = object.optString("id");
String email = object.optString("email");
String name = object.optString("name");
Uri.Builder builder = new Uri.Builder();
builder.scheme("https")
.authority("graph.facebook.com")
.appendPath(uid)
.appendPath("picture")
.appendQueryParameter("width", "1000")
.appendQueryParameter("height", "1000");
Uri pictureUri = builder.build();
try {
sendLogin(uid, name, email, pictureUri.toString(), "fb");
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
facebookLogout();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id, name, email");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException e) {
Toast.makeText(getApplication(), "Something went wrong, please try again later", Toast.LENGTH_LONG).show();
}
};
public void facebookLogout() {
LoginManager.getInstance().logOut();
}
I received a notification on messenger saying "null sent a message.". Next to that notification, there's a girl's profile picture. I checked my messenger including the spam folder and "message requests", but there's nothing in there. If I open the notification, will it display the girl's name?
Why my Facebook saying null - Apple Community
java - Why is user email null when signing into Facebook account, but not null when signing into Google account? - Stack Overflow
Facebook Login - Obtain null Authentication token
Videos
This is the notification that I've received. I would really like to know who the girl is, but I'm afraid of opening the notification in case this is a virus? Will opening the notification show me this girl's name?
I'm new to reddit and I've noticed some profiles show null when you view them Anybody know what that means exactly? It is an automatic thing or?
I had the same problem and I think I found out why: If the user has an unconfirmed email in Facebook (i.e. Facebook sent him a validation mail to the user's email address but he didn't respond) Facebook WILL NOT pass that email to your app even if he gave you the email permissions.
So what I did is use his or her Facebook email if the user has a user name (i.e. userName@facebook.com).
I have the same issue. It is working fine on my localhost, i am using php SDK for facebook login and when i submit my request it's return all the fields like email,name etc of the user but on server somehow it is not working.It will not returns user email. I have done lots of R&D on that and i have the solution for the issue. :)
$profile = $facebook->api('/me?fields=email,first_name,last_name');
if you are using php-sdk just passes fields like this it returns the email,first_name etc. Hopes it works for you all. thanks.