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);
}
}
});
}
を作品
、Googleは作品にサインしますか? – Nirel
はい、そうですが、私はGoogleについて尋ねていません。しかし、私はFacebookのサインアッププロセスが動作していることを付け加えます。つまり、firebaseで認証されたFacebookユーザーを取得しています。ありがとう。 – GraSim