7

Używam firebaseAuth do logowania użytkownika przez FB. Oto kodAndroid: Jak uzyskać większy profil pic od fb przy użyciu firebaseAuth

private FirebaseAuth mAuth; 
private FirebaseAuth.AuthStateListener mAuthListener; 
private CallbackManager mCallbackManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FacebookSdk.sdkInitialize(getApplicationContext()); 

    // Initialize Firebase Auth 
    mAuth = FirebaseAuth.getInstance(); 

    mAuthListener = firebaseAuth -> { 
     FirebaseUser user = firebaseAuth.getCurrentUser(); 
     if (user != null) { 
      // User is signed in 
      Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid()); 
     } else { 
      // User is signed out 
      Log.d(TAG, "onAuthStateChanged:signed_out"); 
     } 

     if (user != null) { 
      Log.d(TAG, "User details : " + user.getDisplayName() + user.getEmail() + "\n" + user.getPhotoUrl() + "\n" 
        + user.getUid() + "\n" + user.getToken(true) + "\n" + user.getProviderId()); 
     } 
    }; 
} 

kwestią jest, że zdjęcie w JESTEM uzyskać z użyciem user.getPhotoUrl() jest bardzo mały. Potrzebuję większego obrazu i nie mogę znaleźć sposobu na zrobienie tego. Każda pomoc będzie bardzo ceniona. Próbowałem już tego Get larger facebook image through firebase login , ale nie działa, chociaż są one na szybkie, nie sądzę, że api powinny się różnić.

+0

Zobacz http://stackoverflow.com/questions/38032124/get-larger-facebook-image-through-firebase-login –

+0

@FrankvanPuffelen Próbowałem tych odpowiedzi i nie zrobił” t work + it for swift chociaż interfejs API powinien być podobny, ale wciąż nie działa, możesz usunąć swoją recenzję –

+0

Podejście do uzyskania takich informacji jest takie samo na każdej platformie. Jeśli wypróbowałeś opisane tam podejście, podziel się tym, czego próbujesz. –

Odpowiedz

14

Nie można uzyskać zdjęcia profilu z Firebase większego niż dostarczone przez getPhotoUrl(). Jednak wykres na Facebooku sprawia, że ​​otrzymanie obrazu profilu użytkownika w dowolnym rozmiarze jest bardzo proste, pod warunkiem, że masz identyfikator Facebook użytkownika.

String facebookUserId = ""; 
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
ImageView profilePicture = (ImageView) findViewById(R.id.image_profile_picture); 

// find the Facebook profile and get the user's id 
for(UserInfo profile : user.getProviderData()) { 
    // check if the provider id matches "facebook.com"  
    if(FacebookAuthProvider.PROVIDER_ID.equals(profile.getProviderId())) { 
     facebookUserId = profile.getUid(); 
    } 
} 

// construct the URL to the profile picture, with a custom height 
// alternatively, use '?type=small|medium|large' instead of ?height= 
String photoUrl = "https://graph.facebook.com/" + facebookUserId + "/picture?height=500"; 

// (optional) use Picasso to download and show to image 
Picasso.with(this).load(photoUrl).into(profilePicture); 
+0

Mimo, że znalazłem już odpowiedź za zamieszczanie tutaj, mam nadzieję, że pomoże to innym, którzy szukają tego samego rozwiązania. Proszę powtórzyć pytanie, na które przyjąłem twoją odpowiedź. Dzięki @Mathias –

+0

co to jest facebook_provider_id? Czy to facebook_app_id? –

+0

facebook_provider_id to po prostu "facebook.com". Umieściłem go w Strings.xml, dzięki czemu mogłem go łatwo zmienić, jeśli Firebase zdecyduje się go później zmienić z jakiegokolwiek powodu. –

5

Jeśli ktoś szuka tego, ale na koncie Google, używając FirebaseAuth. Znalazłem obejście tego problemu. Jeśli detal URL obrazku:

https://lh4.googleusercontent.com/../.../.../.../s96-c/photo.jpg

Przełącznik/S96-C/określa rozmiar obrazu (96x96 w tym przypadku), więc wystarczy, aby zastąpić tę wartość o pożądanej wielkości.

String url= FirebaseAuth.getInstance().getCurrentUser().getPhotoUrl(); 
url = url.replace("/s96-c/","/s300-c/"); 

Możesz analizować adres URL zdjęcia, aby sprawdzić, czy istnieje inny sposób zmiany jego rozmiaru.

Jak powiedziałem na początku, działa to tylko dla kont Google. Sprawdź odpowiedź @Mathiasa Brandta, aby uzyskać niestandardowy rozmiar obrazu profilu facebook.

0
photoUrl = "https://graph.facebook.com/" + facebookId+ "/picture?height=500" 

Możesz przechowywać ten link do bazy danych bazy danych z użytkownikiem facebookId i używać go w aplikacji. Ponadto można zmienić wysokość jako parametr