2016-05-23 12 views
7

Jak mogę uzyskać zdjęcie użytkownika z przyzwoitą rozdzielczością, z którego można korzystać w aplikacji mobilnej? Spojrzałem na przewodniki i api docs, a zalecanym sposobem wydawało się użycie FirebaseUser#getPhotoUrl(). Powoduje to jednak dodanie adresu URL do zdjęcia o rozdzielczości 50 x 50 pikseli, które jest zbyt niskie, aby mogło być użyteczne. Czy istnieje sposób, aby klient zażądał zdjęcia o wyższej rozdzielczości użytkownika? Testowałem oddzielnie SDONy Loginu Facebook i Google Sign-in, aw obu przypadkach rozdzielczość zdjęć jest wyższa niż to, co daje Autoryzacja Firebase. Dlaczego Firebase Auth zmienia pierwotne rozdzielczości i jak mogę je zmusić, aby tego nie robił? Dzięki.Android Firebase Auth - Uzyskaj zdjęcie użytkownika

Odpowiedz

1

Czy próbowałeś:

Uri xx = FirebaseAuth.getInstance().getCurrentUser().getPhotoUrl(); 
+0

Tak, mam. To daje zdjęcie w rozmiarze 50 x 50 pikseli. – mobilekid

6

Wewnątrz onAuthStateChanged (@NonNull FirebaseAuth firebaseAuth)

Spróbuj Jeśli Logowanie przez Facebook:

if (!user.getProviderData().isEmpty() && user.getProviderData().size() > 1) 
       String URL = "https://graph.facebook.com/" + user.getProviderData().get(1).getUid() + "/picture?type=large"; 
4

Facebook i Google PhotoURL:

 User myUserDetails = new User(); 
     myUserDetails.name = firebaseAuth.getCurrentUser().getDisplayName(); 
     myUserDetails.email = firebaseAuth.getCurrentUser().getEmail(); 

     String photoUrl = firebaseAuth.getCurrentUser().getPhotoUrl().toString(); 
     for (UserInfo profile : firebaseAuth.getCurrentUser().getProviderData()) { 
      System.out.println(profile.getProviderId()); 
      // check if the provider id matches "facebook.com" 
      if (profile.getProviderId().equals("facebook.com")) { 

       String facebookUserId = profile.getUid(); 

       myUserDetails.sigin_provider = profile.getProviderId(); 
       // construct the URL to the profile picture, with a custom height 
       // alternatively, use '?type=small|medium|large' instead of ?height= 

       photoUrl = "https://graph.facebook.com/" + facebookUserId + "/picture?height=500"; 

      } else if (profile.getProviderId().equals("google.com")) { 
       myUserDetails.sigin_provider = profile.getProviderId(); 
       ((HomeActivity) getActivity()).loadGoogleUserDetails(); 
      } 
     } 
     myUserDetails.profile_picture = photoUrl; 




private static final int RC_SIGN_IN = 8888;  

public void loadGoogleUserDetails() { 
     try { 
      // Configure sign-in to request the user's ID, email address, and basic profile. ID and 
      // basic profile are included in DEFAULT_SIGN_IN. 
      GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
        .requestEmail() 
        .build(); 

      // Build a GoogleApiClient with access to GoogleSignIn.API and the options above. 
      mGoogleApiClient = new GoogleApiClient.Builder(this) 
        .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() { 
         @Override 
         public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
          System.out.println("onConnectionFailed"); 
         } 
        }) 
        .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
        .build(); 

      Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
      startActivityForResult(signInIntent, RC_SIGN_IN); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 




@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     // Result returned from launching the Intent from 
     // GoogleSignInApi.getSignInIntent(...); 
     if (requestCode == RC_SIGN_IN) { 
      GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
      if (result.isSuccess()) { 
       GoogleSignInAccount acct = result.getSignInAccount(); 
       // Get account information 
       String PhotoUrl = acct.getPhotoUrl().toString(); 

      } 
     } 
    } 
+0

Próbowałem tego na Facebooku i odniosłem sukces. Nie wypróbowałem jeszcze części Google. dzięki – Dika

Powiązane problemy