0

Ich benutze Facebook-Authentifizierung mit Firebase und ich versuche, die Foto-URL von dem authentifizierten Benutzer zu erhalten. Ich habe versucht, die folgende Methode verwendet:Firebase: Get Facebook Foto Url [Android]

String photoUrl = firebaseUser.getPhotoUrl().toString(); 

Und diese Methode:

String photoUrl = firebaseUser.getProviderData().get(0).getPhotoUrl().toString(); 

Beide geben eine URL im Format: https://scontent.xx.fbcdn.net/v/t1.0-1/p100x100/1230538156_10205381561684678_351630538156623_n.jpg

Wenn ich versuche, diese URL zugreifen, I erhalten die folgende Meldung:

"der Zugang zu scontent.xx.fbcdn.net verweigert wurde"

Als Alternative habe ich versucht, die Facebook-ID des Benutzers zu erhalten, damit ich das Foto mit der Graph-API anfordern kann, aber es scheint, dass ich keine Möglichkeit habe, die Facebook-ID zu erhalten. Ich dachte, das würde funktionieren:

Aber das gibt die Zeichenfolge "Firebase" ??? ... um was?

Meine volle Methode:

private void firebaseAuthWithFacebook(AccessToken token) { 

     showProgressDialog("Signing in with Facebook","Signing in with Facebook"); 


     AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken()); 
     mAuth.signInWithCredential(credential) 
       .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) { 
         Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful()); 

         if(task.isSuccessful()){ 
          FirebaseUser user = mAuth.getInstance().getCurrentUser(); 
          if (user != null) { 
           addNewUserFacebook(user); 
          } 

         } 
         else{ 
          Toast.makeText(SignInActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); 
         } 
         hideProgressDialog(); 
        } 
       }); 
    } 




private void addNewUserFacebook(FirebaseUser firebaseUser){ 
     String name = firebaseUser.getDisplayName(); 
     String email = firebaseUser.getEmail(); 

     /*My THREE failed methods - cue sad trombone */ 

     //String photoUrl = firebaseUser.getPhotoUrl().toString(); 
     //String photoUrl = firebaseUser.getProviderData().get(0).getPhotoUrl().toString(); 
     String photoUrl = "https://graph.facebook.com/" + firebaseUser.getProviderData().get(0).getProviderId() + "/picture?type=large"; 

     String providerId = "Facebook"; 
     final String uid = firebaseUser.getUid(); 

     User user = new User(name, email, photoUrl, providerId); 

     rootRef.child("users").child(uid).setValue(user, new DatabaseReference.CompletionListener() { 
      @Override 
      public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
       if (databaseError == null){ 
        //add local user information 
        updateUser(uid); 
       } 

      } 
     }); 

    } 
+0

Um es spezifischer zu machen, tut Google Anmelden funktioniert? – Nirel

+0

Ja, aber ich frage nicht nach Google. Aber ich werde hinzufügen, dass der Facebook-Registrierungsprozess funktioniert ... d. H. Ich bekomme einen Firebase-authentifizierten Facebook-Nutzer. Vielen Dank. – GraSim

Antwort

0

Nun, ich hatte das gleiche Problem, ich alle Daten von der Facebook-Anwendung in der Konfiguration auf dem Telefon gelöscht, keine Daten, habe ich versucht, und das Problem ist gelöst, Facebook wird schwindelig, denke ich.

diese Methode funktioniert für mich

String photoUrl = firebaseUser.getProviderData().get(0).getPhotoUrl().toString();