0

Я использую аутентификацию Facebook с Firebase, и я пытаюсь получить URL-адрес фотографии от аутентифицированного пользователя. Я попытался, используя следующий метод:Firebase: Get Facebook Photo Url [Android]

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

И этот метод:

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

Они оба возвращают URL в формате: https://scontent.xx.fbcdn.net/v/t1.0-1/p100x100/1230538156_10205381561684678_351630538156623_n.jpg

При попытке открыть этот адрес, я получить следующее сообщение:

"Доступ к scontent.xx.fbcdn.net было отказано"

В качестве альтернативы я попытался получить идентификатор facebook пользователя, чтобы я мог запросить фотографию с помощью Graph API, но, похоже, не смог получить идентификатор facebook. Я думал, что следующее будет работать:

firebaseUser.getProviderData().get(0).getProviderId(); 

Но это возвращает строку «firebase» ??? ... ммм что?

Мой полный метод:

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

Чтобы сделать его конкретным, делает Google Вход в работах? – Nirel

+0

Да, но я не спрашиваю о Google. Но я добавлю, что процесс регистрации facebook работает ... i.e Я получаю аутентифицированный пользователь Facebook Firebase. Благодарю. – GraSim

ответ

0

Ну, у меня была такая же проблема, я удалил все данные из приложения Facebook в конфигурации по телефону, нет данных, я не пробовал, и проблема решена, Facebook У меня головокружение.

этот метод работает для меня

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