Obtenir l'adresse de courriel en utilisant Facebook SDK pour Android 3.0.1
Je suis en train de développer une application qui vise à authentifier l'utilisateur à l'aide de Facebook compte.
J'ai de la difficulté à obtenir l'email de l'utilisateur à partir du compte de l'utilisateur. Mon code est ci-dessous
private void signInWithFacebook() {
SessionTracker mSessionTracker = new SessionTracker(getBaseContext(), new StatusCallback() {
public void call(Session session, SessionState state, Exception exception) {
}
}, null, false);
String applicationId = Utility.getMetadataApplicationId(getBaseContext());
Session mCurrentSession = mSessionTracker.getSession();
if (mCurrentSession == null || mCurrentSession.getState().isClosed()) {
mSessionTracker.setSession(null);
Session session = new Session.Builder(getBaseContext()).setApplicationId(applicationId).build();
Session.setActiveSession(session);
mCurrentSession = session;
}
if (!mCurrentSession.isOpened()) {
Session.OpenRequest openRequest = null;
openRequest = new Session.OpenRequest(FacebookLoginActivity.this);
if (openRequest != null) {
openRequest.setDefaultAudience(SessionDefaultAudience.FRIENDS);
openRequest.setPermissions(Arrays.asList("user_birthday", "email", "user_location"));
openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
mCurrentSession.openForRead(openRequest);
}
}else {
Request.executeMeRequestAsync(mCurrentSession, new Request.GraphUserCallback() {
public void onCompleted(GraphUser user, Response response) {
Log.w("myConsultant", user.getId() + " " + user.getName() + " " + user.getLink() + " "+ response);
}
});
}
}
Je suis en utilisant Facebook SDK 3.0.1 pour Android.
J'ai mis les autorisations requises par le Facebook Graph Api.
Dans le fichier xml de réponse, il n'y a pas de terrain, comme le courrier électronique.
Facebook Sdk documentations ne sont pas assez bon et je ne sais pas chaud pour obtenir l'adresse e-mail.
De votre réponse rapide sera grandement apprécié.
Merci d'avance,
Vous devez vous connecter pour publier un commentaire.
E-mail n'est pas un champ par défaut qui est retourné. Au lieu de cela, vous devez créer un meRequest, et lui passer un paramètre comme: champs=e-mail.
executeMeRequestAsync
et s'est aussi demandé comment obtenir de l'électronique de l'utilisateur, notamment en tant qu'objetGraphUser
ne pas fournir unegetEmail()
méthode ou similaire. Cependant, cette réponse est très utile. Sur le retour de l'GraphUser
objet que j'ai utiliségetInnerJSONObject()
pour obtenir un pur objet jSON avec les principauxemail
Email is not a default field that's returned
- ce qui est faux énoncé. Une fois que vousemail
autorisation, leGraphUser
contiendra l'e-mail de la valeur.User
table contient toutes les propriétés qui doivent être explicitement demandée (champ=bien) et qui ne le sont pas: developers.facebook.com/docs/reference/api/user.vous appeler comme cela en vertu de l'ordinaire des choses - ne différent que vous ne pouvez pas directement l'utilisateur.e-mail
Système.out.println(de l'utilisateur.asMap().get("email").toString());
régulier :
suffit d'appeler cette méthode renvoie l'utilisateur id e-mail pour vous.
D'abord ajouter l'autorisation appropriée, puis aller chercher le courrier à l'aide du
getProperty
fonction.