Je développe une application dans laquelle j'utilise le bouton de connexion Facebook
de SDK. Je peux obtenir access_token
de l'utilisateur mais je veux aussi userID
. J'ai presque tout essayé mais je n'ai pas réussi. J'ai utilisé le tutoriel de Facebook pour y parvenir. Voici le lien: Facebook Login Button
Aidez-moi à obtenir userID
à partir du même bouton de connexion.
Toute aide sera appréciée.
Une fois la connexion établie, vous devez appeler le code suivant. Vous pouvez obtenir les détails de l'utilisateur connecté avec l'identifiant en réponse.
Session session = Session.getActiveSession();
Request request = Request.newGraphPathRequest(session, "me", null);
com.facebook.Response response = Request.executeAndWait(request)
Utilisez la méthode getId de la classe de profil FB (Facebook SDK 4.0).
Profile profile = Profile.getCurrentProfile();
System.out.println(profile.getFirstName());
System.out.println(profile.getId());
loginResult.getAccessToken().getUserId()
Vous devriez être utilisé new facebook sdk 3.0 et
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
if (Session.getActiveSession().isOpened()) {
// Request user data and show the results
Request.executeMeRequestAsync(Session.getActiveSession(), new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
// TODO Auto-generated method stub
if (user != null) {
// Display the parsed user info
Log.v(TAG, "Response : " + response);
Log.v(TAG, "UserID : " + user.getId());
Log.v(TAG, "User FirstName : " + user.getFirstName());
}
}
});
}
}
Selon la réponse de @Ketan Mehta ( https://stackoverflow.com/a/17397931/624109 ) qui utilise une API obsolète, vous devez utiliser le code suivant:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
if (Session.getActiveSession().isOpened())
{
// Request user data and show the results
Request.newMeRequest(Session.getActiveSession(), new GraphUserCallback()
{
@Override
public void onCompleted(GraphUser user, Response response)
{
if (null != user)
{
// Display the parsed user info
Log.v(TAG, "Response : " + response);
Log.v(TAG, "UserID : " + user.getId());
Log.v(TAG, "User FirstName : " + user.getFirstName());
}
}
}).executeAsync();
}
}
Comme toutes ces réponses concernent un SDK plus ancien, voici le code du SDK 4.0:
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
Profile profile = Profile.getCurrentProfile();
Log.d("facebook",profile.getId());
}
@Override
public void onCancel() {
// App code
Log.d("facebook","failed");
}
@Override
public void onError(FacebookException exception) {
// App code
Log.d("facebook","failed");
}
});
je cherchais la même chose qui ressemble à l'objet Session n'est plus accessible, voici donc la nouvelle façon d'obtenir le profil et l'ID utilisateur.
L'API de graphique de Facebook vous permet de faire des appels renvoyant du JSON, que vous pouvez analyser dans Android avec un objet JSON tel que le code ci-dessous.
JSONObject me = new JSONObject(fb.request("me"));
String id = me.getString("id");
Vous pouvez obtenir l'ID utilisateur avec ce code:
document.getElementById('status').innerHTML =
'Welcome ' + response.name + '!' + "<br />"+
'Your user ID is : ' + response.id;