2016-05-23 21 views
7

Làm cách nào tôi có thể truy xuất ảnh của người dùng có độ phân giải khá có thể được sử dụng từ ứng dụng dành cho thiết bị di động? Tôi đã xem các hướng dẫn và tài liệu api và cách được đề xuất dường như sử dụng FirebaseUser#getPhotoUrl(). Tuy nhiên, điều này sẽ trả lại một url cho ảnh có độ phân giải 50x50 px, quá thấp để có thể hữu ích. Có cách nào để khách hàng yêu cầu ảnh có độ phân giải cao hơn của người dùng không? Tôi đã thử nghiệm các sdks của Đăng nhập Facebook và Đăng nhập bằng Google một cách riêng biệt và trong cả hai trường hợp, độ phân giải của ảnh cao hơn so với những gì Firebase Auth trả lại. Tại sao Autbase Firebase thay đổi độ phân giải ban đầu và làm thế nào tôi có thể buộc nó không làm điều đó? Cảm ơn.Xác thực Firebase của Android - Nhận Ảnh của Người dùng

Trả lời

1

Các bạn đã thử:

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

Có, tôi có. Điều đó mang lại cho bạn một bức ảnh 50x50 px. – mobilekid

6

Bên onAuthStateChanged (@NonNull FirebaseAuth firebaseAuth)

Hãy thử Nếu bạn đăng nhập với 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 và 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

Tôi đã thử điều này cho một phần facebook và thành công. Tôi chưa thử phần google. cảm ơn – Dika

Các vấn đề liên quan