Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase:获取Facebook照片Url[Android]_Android_Firebase_Firebase Authentication_Facebook Android Sdk - Fatal编程技术网

Firebase:获取Facebook照片Url[Android]

Firebase:获取Facebook照片Url[Android],android,firebase,firebase-authentication,facebook-android-sdk,Android,Firebase,Firebase Authentication,Facebook Android Sdk,我正在使用FacebookAuthenticationwithFirebase,我正在尝试从经过身份验证的用户那里获取照片Url。我尝试使用以下方法: String photoUrl = firebaseUser.getPhotoUrl().toString(); 这种方法: String photoUrl = firebaseUser.getProviderData().get(0).getPhotoUrl().toString(); 它们都以以下格式返回url: 当我尝试访问此url时,

我正在使用FacebookAuthenticationwithFirebase,我正在尝试从经过身份验证的用户那里获取照片Url。我尝试使用以下方法:

String photoUrl = firebaseUser.getPhotoUrl().toString();
这种方法:

String photoUrl = firebaseUser.getProviderData().get(0).getPhotoUrl().toString();
它们都以以下格式返回url:

当我尝试访问此url时,会收到以下消息:

“对scocontent.xx.fbcdn.net的访问被拒绝”

作为替代方案,我已经尝试获取用户的facebook id,以便我可以使用Graph API请求照片,但似乎无法获取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);
                }

            }
        });

    }
private void firebaseAuthWithFacebook(AccessToken令牌){
showProgressDialog(“使用Facebook登录”、“使用Facebook登录”);
AuthCredential credential=FacebookAuthProvider.getCredential(token.getToken());
mAuth.SIGNWITH凭证(凭证)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
Log.d(标记“signInWithCredential:onComplete:+task.isSuccessful()”);
if(task.issusccessful()){
FirebaseUser=mAuth.getInstance().getCurrentUser();
如果(用户!=null){
addNewUserFacebook(用户);
}
}
否则{
Toast.makeText(SignInActivity.this,“身份验证失败”,Toast.LENGTH_SHORT.show();
}
hideProgressDialog();
}
});
}
私有void addNewUserFacebook(FirebaseUser FirebaseUser){
String name=firebaseUser.getDisplayName();
字符串email=firebaseUser.getEmail();
/*我的三个失败的方法-提示悲伤长号*/
//字符串photoUrl=firebaseUser.getPhotoUrl().toString();
//字符串photoUrl=firebaseUser.getProviderData().get(0.getPhotoUrl().toString();
字符串photoUrl=”https://graph.facebook.com/“+firebaseUser.getProviderData().get(0.getProviderId()+”/picture?type=large”;
字符串providerId=“Facebook”;
最后一个字符串uid=firebaseUser.getUid();
用户=新用户(姓名、电子邮件、照片URL、providerId);
rootRef.child(“用户”).child(uid).setValue(用户,新数据库引用.CompletionListener()){
@凌驾
public void onComplete(DatabaseError DatabaseError,DatabaseReference DatabaseReference){
if(databaseError==null){
//添加本地用户信息
更新程序(uid);
}
}
});
}

嗯,我也遇到了同样的问题,我删除了手机配置中Facebook应用程序的所有数据,没有数据,我尝试了,问题解决了,我想Facebook会头晕的

这个方法对我有用

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

嗯,我也有同样的问题,我删除了手机配置中Facebook应用程序的所有数据,没有数据,我尝试了,问题解决了,我想Facebook会头晕

这个方法对我有用

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

具体来说,谷歌登录有效吗?是的,但我不是在问谷歌。但我要补充的是,facebook的注册过程正在运行……也就是说,我得到了一个firebase认证的facebook用户。谢谢。具体来说,谷歌登录有效吗?是的,但我不是在问谷歌。但我要补充的是,facebook的注册过程正在运行……也就是说,我得到了一个firebase认证的facebook用户。谢谢