Firebase: Получить Facebook Фото Url [ Android ]

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

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

Когда я пытаюсь получить доступ к этому url, я получаю следующее сообщение:

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

В качестве альтернативы я попытался получить идентификатор facebook пользователя, чтобы я мог запросить фотографию с помощью API Graph, но, похоже, нет способа получить идентификатор 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);
                }

            }
        });

    }

1 ответ

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

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

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