Я реализовал функцию входа в Facebook в Android Studio с помощью Firebase, но есть кое-что, что я хочу сделать на следующем шаге
После входа
-Измените изображение значка Facebook на изображение профиля пользователя
То, что я пробовал
・ Преобразование URL в изображение с помощью Picasso
・ Обновите изображение с помощью getPhotoUrl (). ToString ()
Если вы когда-либо реализовывали подобные функции или знаете, как их решать, я был бы признателен, если бы вы научили меня.
На изображении ↓ есть значок Facebook, но когда пользователь успешно вошел в систему, значок Facebook должен измениться на изображение профиля пользователя.
MainActivity
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.squareup.picasso.Picasso;
public class MainActivity extends AppCompatActivity {
private TextView info;
private LoginButton loginButton;
private CallbackManager callbackManager;
private ImageView mLogo;
private FirebaseAuth mFirbaseAuth;
private FirebaseAuth.AuthStateListener authStateListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFirbaseAuth = FirebaseAuth.getInstance();
mLogo = findViewById(R.id.image_logo);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_main);
info = (TextView)findViewById(R.id.info);
loginButton = (LoginButton)findViewById(R.id.login_button);
//After Click "Logout", infoTEXT should be cleared
loginButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
info.setText("");
}
});
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
info.setText("User ID: " + loginResult.getAccessToken().getUserId() + "\n");
FirebaseUser user = mFirbaseAuth.getCurrentUser();
updateUI(user);
}
@Override
public void onCancel() {
info.setText("Login attempt canceled.");
}
@Override
public void onError(FacebookException e) {
info.setText("Login attempt failed.");
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode , resultCode , data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
private void updateUI(FirebaseUser user){
if (user != null) {
if (user.getPhotoUrl() != null){
String photoUrl = user.getPhotoUrl().toString();
photoUrl = photoUrl + "?type=large";
Picasso.get().load(photoUrl).into(mLogo);
} else {
mLogo.setImageResource(R.drawable.logo);
}
}
}
}
AcitivityMainXML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/info"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:textSize="18sp"
/>
<TextView
android:id="@+id/test"
android:layout_width="95dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="6dp"
android:layout_marginTop="7dp"
android:textSize="18sp" />
<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:layout_marginBottom="333dp" />
<ImageView
android:id="@+id/image_logo"
android:layout_width="match_parent"
android:layout_height="122dp"
android:layout_alignParentEnd="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="200dp"
android:layout_marginEnd="3dp"
app:srcCompat="@drawable/com_facebook_favicon_blue" />
</RelativeLayout>