Android Facebook SDK 4.X, comment obtenir l'adresse e-mail et le jeton d'accès Facebook pour le transmettre au service Web
EDIT :
Ma Question est comment faire pour obtenir l'e-Mail , nom d'utilisateur , Facebook Authentification avec Facebook SDK 4.X , en ce moment , avec Ming Répondre , je sais comment puis-je obtenir e-Mail , Id Utilisateur , donc ma question est de savoir comment obtenir Facebook Authentification depuis la Session et GraphUser a simplement été remplacé par LoginManager et AccessToken et il n'y a pas d'information à ce sujet?
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.Profile;
import com.facebook.ProfileTracker;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import java.util.Arrays;
public class RegisterActivity extends Activity {
private String fbUserID;
private String fbProfileName;
private String fbAuthToken;
private LoginButton fbLoginBtn;
private static final String TAG = "FacebookLogin";
CallbackManager callbackManager;
private AccessTokenTracker accessTokenTracker;
private ProfileTracker profileTracker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register_activity);
fbLoginBtn = (LoginButton) findViewById(R.id.connect_with_facebook_button);
fbLoginBtn.setReadPermissions(Arrays.asList("email", "user_photos", "public_profile"));
fbLoginBtn.setBackgroundResource(R.drawable.connect_facebook_button);
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(
AccessToken oldAccessToken,
AccessToken currentAccessToken) {
fbAuthToken = currentAccessToken.getToken();
fbUserID = currentAccessToken.getUserId();
Log.d(TAG, "User id: " + fbUserID);
Log.d(TAG, "Access token is: " + fbAuthToken);
}
};
profileTracker = new ProfileTracker() {
@Override
protected void onCurrentProfileChanged(
Profile oldProfile,
Profile currentProfile) {
fbProfileName = currentProfile.getName();
Log.d(TAG, "User name: " + fbProfileName );
}
};
fbLoginBtn.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
}
@Override
public void onCancel() {
//App code
}
@Override
public void onError(FacebookException exception) {
//App code
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
GraphRequest request = GraphRequest.newMeRequest(
accessToken,
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject user,
GraphResponse response) {
String id = user.optString("id");
String firstName = user.optString("first_name");
String lastName = user.optString("last_name");
String email = user.optString("email");
}
@Override
public void onSaveInstanceState(Bundle savedState) {
super.onSaveInstanceState(savedState);
}
source d'informationauteur John | 2015-04-08
Vous devez vous connecter pour publier un commentaire.
Réponse la plus facile que j'ai trouvé après des heures de recherche est la suivante,la plus haute voté réponse n'a pas fonctionné pour moi et le courrier électronique était toujours vide
Je crois que la définition des paramètres comme les champs requis pour le Graphique de la Demande est une chose essentielle ici. Vous pouvez également utiliser ce code avec LoginButton, fonctionne sans problème.
****** Mise à jour********
Après l'utilisation de ce code avec de nombreux comptes a constaté que si l'email n'est pas vérifié, il ne sera pas retourné, dans de tels cas suivants du code aidé avec abo
Espère que cela aide encore
Je dois ajouter un champ supplémentaire pour l'Email de l'utilisateur.