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.