J'essaie d'ajouter une connexion facebook dans une application Android. Fait avec succès à la suite de ce tutoriel https://www.studytutorial.in/android-facebook-integration-and-login-tutorial. Il contient deux activités MainActivity, UserProfileActivity. MainActivity est le lanceur d'applications, avec le bouton de connexion. Après les informations d'identification correctes, UserProfileActivity est appelé via l'intention, il a sa propre mise en page xml, il affiche donc User Profile Pic, nom et email.Comment afficher la photo de profil Facebook après vous être connecté?
Après avoir appuyé sur le bouton de retour, retournez à MainActivity --- L'affichage résultant est le texte de loginButton modifié en bouton de déconnexion. Après avoir cliqué sur le bouton de déconnexion, la déconnexion est exécutée, mais lorsque vous vous reconnectez, il est indiqué "Vous êtes déjà connecté avec some_user_name." Avec le bouton continuer et annuler
Donc, ma question est, comment effacer les détails de connexion précédents. , comment montrer la photo de profil comme ImageView de MainActivity (juste au-dessus loginButton)?
Voici mon MainActivity
public class MainActivity extends AppCompatActivity {
CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("email");
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
getUserDetails(loginResult);
}
@Override
public void onCancel() {
Log.d("LOGIN_CANCEL", "Cancel");
}
@Override
public void onError(FacebookException error) {
Log.d("LOGIN_ERROR", "Error");
}
});
}
protected void getUserDetails(LoginResult loginResult) {
GraphRequest data_request = GraphRequest.newMeRequest(loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject json_object, GraphResponse response) {
Intent intent = new Intent(MainActivity.this, UserProfileActivity.class);
intent.putExtra("userProfile", json_object.toString());
startActivity(intent);
}
});
Bundle permission_param = new Bundle();
permission_param.putString("fields", "id, name, email, picture.width(120).height(120)");
data_request.setParameters(permission_param);
data_request.executeAsync();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
Voici mon UserProfileActivity
public class UserProfileActivity extends AppCompatActivity implements View.OnClickListener {
JSONObject response, profile_pic_data, profile_pic_url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_profile);
Intent intent = getIntent();
String jsondata = intent.getStringExtra("userProfile");
Log.w("Jsondata", jsondata);
ImageView user_picture = (ImageView) findViewById(R.id.profilePic);
TextView user_name = (TextView) findViewById(R.id.UserName);
TextView user_email = (TextView) findViewById(R.id.email);
Button backButton = (Button) findViewById(R.id.backbutton);
backButton.setOnClickListener(this);
try {
response = new JSONObject(jsondata);
user_email.setText(response.get("email").toString());
user_name.setText(response.get("name").toString());
profile_pic_data = new JSONObject(response.get("picture").toString());
profile_pic_url = new JSONObject(profile_pic_data.getString("data"));
Picasso.with(this).load(profile_pic_url.getString("url")).into(user_picture);
} catch (JSONException e) {
e.printStackTrace();
}
}
utilisez 'ProfilePictureView' – grant