Как я могу реализовать функцию изменения фотографии со значка FB на изображение профиля FB после успешного входа в систему? - PullRequest
0 голосов
/ 08 мая 2020

Я реализовал функцию входа в Facebook в Android Studio с помощью Firebase, но есть кое-что, что я хочу сделать на следующем шаге

После входа

-Измените изображение значка Facebook на изображение профиля пользователя

То, что я пробовал

・ Преобразование URL в изображение с помощью Picasso

・ Обновите изображение с помощью getPhotoUrl (). ToString ()

Если вы когда-либо реализовывали подобные функции или знаете, как их решать, я был бы признателен, если бы вы научили меня.

На изображении ↓ есть значок Facebook, но когда пользователь успешно вошел в систему, значок Facebook должен измениться на изображение профиля пользователя.

enter image description here

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...