0

Facebook認証をFirebaseで使用しており、認証済みのユーザーから写真のURLを取得しようとしています。彼らは両方の形式でURLを返すFirebase:Facebookの写真URLを取得する[Android]

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

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

そして、この方法:私は、次のメソッドを使用して試してみたhttps://scontent.xx.fbcdn.net/v/t1.0-1/p100x100/1230538156_10205381561684678_351630538156623_n.jpg

私はこのURLにアクセスしようとすると、I次のメッセージが表示されます。

"scontent.xx.fbcdn.netへのアクセスが拒否されました"

代わりに、グラフAPIを使用して写真をリクエストできるようにユーザーのFacebook IDを取得しようとしましたが、FacebookのIDを取得する方法がないようです。私は次のように動作すると思った:

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のサインアッププロセスが動作していることを付け加えます。つまり、firebaseで認証されたFacebookユーザーを取得しています。ありがとう。 – GraSim

答えて

0

まあ、私は同じ問題を抱えていたが、私は、電話ではデータを構成内のFacebookアプリケーションからすべてのデータを削除していない、私が試したし、問題が解決し、Facebookのめまいになるこの方法は、それが具体的にするために私のため

String photoUrl = firebaseUser.getProviderData().get(0).getPhotoUrl().toString(); 
関連する問題