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);
}
}
});
}
Um es spezifischer zu machen, tut Google Anmelden funktioniert? – Nirel
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