Ola a todos,
Estou com um problema ao me conectar com a API Facebook, alguns usuários não retorna o email, somente id e nome, testei com 5 usuários do facebook, o meu e de mais dois colegas funcionam, os outros dois não, alguém já pegou esse caso ?
[quote=Fednando]Ola a todos,
Estou com um problema ao me conectar com a API Facebook, alguns usuários não retorna o email, somente id e nome, testei com 5 usuários do facebook, o meu e de mais dois colegas funcionam, os outros dois não, alguém já pegou esse caso ?[/quote]
Olá amigo
Você poste a sua classe que faz a chamada para o Login do Facebook pra gente dar uma olhada.
Abraço
Pode ser permissão. Veja se esses dois não colocaram para ninguém ver o email.
opa, segue o código:
private void logarFacebook() {
SessionStatusCallBack statusCallback = new SessionStatusCallBack();
Session.OpenRequest openRequest = new Session.OpenRequest(ActivityLogin.this);
openRequest.setPermissions(Arrays.asList(“basic_info”, “email”, “user_events”));
openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
openRequest.setCallback(statusCallback);
Session session = Session.getActiveSession();
Log.d("APK", "antes de verificar sessão ");
if (session != null) {
if (session.isOpened()) {
session = new Session.Builder(ActivityLogin.this).setApplicationId(Utility.getMetadataApplicationId(ActivityLogin.this)).build();
}
} else {
session = new Session.Builder(ActivityLogin.this).setApplicationId( Utility.getMetadataApplicationId(ActivityLogin.this)).build();
}
Session.setActiveSession(session);
session.openForRead(openRequest);
}
protected class SessionStatusCallBack implements Session.StatusCallback{
@SuppressWarnings("deprecation")
@Override
public void call(Session session, SessionState state,Exception exception) {
if(dialog.isShowing()){
dialog.dismiss();
}
if(session.isOpened()){
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
Log.d("APK", "dentro onCompleted "+user.getProperty("email") );
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("email", user.getProperty("email").toString());
map.put("name", user.getName());
map.put("facebook_id", user.getId());
map.put("device_identifier", DeviceUtils.getAndroidID(ActivityLogin.this));
executeTask(map);
}
});
}else if (session.getState() == SessionState.CLOSED_LOGIN_FAILED) {
Toast.makeText(ActivityLogin.this, "Erro ao tentar logar com Facebook", Toast.LENGTH_LONG).show();
session.closeAndClearTokenInformation();
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
[quote=Fednando]opa, segue o código:
private void logarFacebook() {
SessionStatusCallBack statusCallback = new SessionStatusCallBack();
Session.OpenRequest openRequest = new Session.OpenRequest(ActivityLogin.this);
openRequest.setPermissions(Arrays.asList(“basic_info”, “email”, “user_events”));
openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
openRequest.setCallback(statusCallback);
Session session = Session.getActiveSession();
Log.d("APK", "antes de verificar sessão ");
if (session != null) {
if (session.isOpened()) {
session = new Session.Builder(ActivityLogin.this).setApplicationId(Utility.getMetadataApplicationId(ActivityLogin.this)).build();
}
} else {
session = new Session.Builder(ActivityLogin.this).setApplicationId( Utility.getMetadataApplicationId(ActivityLogin.this)).build();
}
Session.setActiveSession(session);
session.openForRead(openRequest);
}
protected class SessionStatusCallBack implements Session.StatusCallback{
@SuppressWarnings("deprecation")
@Override
public void call(Session session, SessionState state,Exception exception) {
if(dialog.isShowing()){
dialog.dismiss();
}
if(session.isOpened()){
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
Log.d("APK", "dentro onCompleted "+user.getProperty("email") );
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("email", user.getProperty("email").toString());
map.put("name", user.getName());
map.put("facebook_id", user.getId());
map.put("device_identifier", DeviceUtils.getAndroidID(ActivityLogin.this));
executeTask(map);
}
});
}else if (session.getState() == SessionState.CLOSED_LOGIN_FAILED) {
Toast.makeText(ActivityLogin.this, "Erro ao tentar logar com Facebook", Toast.LENGTH_LONG).show();
session.closeAndClearTokenInformation();
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}[/quote]
olá amigo desculpe a demora na resposta ate aqui não vejo nada de errado, pode ser permissão mesmo do perfil porém posta ai o método : executeTask(map)
pra gente ver !
Abraços