当前位置: 首页 > 知识库问答 >
问题:

通过firebase身份验证添加图像和其他数据

颛孙品
2023-03-14

我想将所有的用户信息存储到firebase中,并将电子邮件和密码传递给firebase auth,然后将图像插入到firebase,但在TaskSnapshot.getDownloadURL().ToString())中出现错误;我也不确定这是不是将用户电子邮件和密码传递给firebase auth的正确方法

public void AddUser(final String UserEmail,final String Username,final String Password,final String PhoneNumber,final String confirmPassword,final String Address

    //first we encode the email into "," to enable check the firebase database
    String email = UserEmail.replace(".", ",");


    Userdatabase = FirebaseDatabase.getInstance().getReference("User").child(email);

    Log.d("UserEmail", Userdatabase.toString());

    Userdatabase.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {

                String value = dataSnapshot.getValue(String.class);

                Log.i(TAG, "UserEmail : " + value + " Had Already Exist");

                Toasty.warning(getApplicationContext(), "The Email you use already Exist !", Toast.LENGTH_SHORT, true).show();
                return;
            }


            if (!dataSnapshot.exists()) {
                if (imageUri != null) {
                    StorageReference fileReference = storageReference.child(System.currentTimeMillis()
                            + "." + getFileExtension(imageUri));

                    mUploadTask = fileReference.putFile(imageUri)
                            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                                @Override
                                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                                    Handler handler = new Handler();
                                    handler.postDelayed(new Runnable() {
                                        @Override
                                        public void run() {
                                        }
                                    }, 500);

                                    Toast.makeText(Signup.this, "Register successful", Toast.LENGTH_LONG).show();

                                    final User user = new User(Address, confirmPassword, UserEmail, Password, PhoneNumber, Username,
                                            taskSnapshot.getDownloadUrl().toString());
                                    Userdatabase.setValue(user);

                                }
                            });
                }
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            return;
        }
    });

    firebaseAuth.createUserWithEmailAndPassword(UserEmail, Password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {

            progressDialog.dismiss();

            if (!task.isSuccessful()) {
                Log.i(TAG, "Buyer FirebaseAuth Register : Fail");

                Toasty.error(getApplicationContext(), "The Email you use already Exist !", Toast.LENGTH_SHORT, true).show();

                } else {
                Log.i(TAG, "Buyer FirebaseAuth Register : Success");

                UserEmail.replace(".", ",");

                final User user = new User(Address, confirmPassword, UserEmail, Password, PhoneNumber, Username);

                Userdatabase.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        if (!dataSnapshot.exists()) {
                            Userdatabase.setValue(user);
                            Log.i(TAG, "FirebaseDatabase Add Buyer : Success");
                            Toasty.success(getApplicationContext(), "Register Complete", Toast.LENGTH_SHORT, true).show();
                            }
                            }
                            @Override
                            public void onCancelled(@NonNull DatabaseError databaseError) {
                        Log.w(TAG, "Database Error");
                        }
                        });
                }
                }
                });
}

}

共有1个答案

谈炳
2023-03-14

以下是问题TaskSnapshot.GetDownloadURL().ToString()

最新的Firebase库通过调用异步任务中的上载引用来传递下载URL

下面是完整的代码

mUploadTask = fileReference.putFile(imageUri)
              .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                            @Override
                            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                            fileReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                            @Override
                                            public void onSuccess(Uri downloadUri) {
                                                link = downloadUri.toString;
                                                Toast.makeText(Signup.this, "Register successful", Toast.LENGTH_LONG).show();
                                                final User user = new User(Address, confirmPassword, UserEmail, Password, PhoneNumber, Username,
                                                        link));
                                                Userdatabase.setValue(user);
                                            }
                                        });
                            }
                        });
 类似资料:
  • 我已经开始开发一个由Google的Firebase服务提供支持的应用程序。我很好奇数据传输在Auth和数据库服务中是否安全。如果没有,我是否可以阅读任何材料来源以实现加密? 非常感谢。

  • 授权服务器可以支持任何与其安全要求匹配的合适的HTTP身份验证方案。当使用其他身份验证方法时,授权服务器必须定义客户端标识(注册记录)和认证方案之间的映射。

  • 我正在尝试使用Firebase验证Vue.js应用程序。 我有一个问题,如果在登录时尝试直接访问受登录保护的URL,路由器将在firebase之前加载并检查身份验证状态。js有时间返回auth响应。这会导致用户被弹回登录页面(当他们已经登录时)。 如何延迟vue-router导航直到从Firebase检索到auth状态?我可以看到Firebase将auth数据存储在local存储中,检查它是否作为

  • 在android studio 3.1.3中,用于链接firebase身份验证的“implementation'com.google.firebase:firebase-auth:11.6.0'”和用于链接firebase数据库的“implementation'com.google.firebase:firebase-database:11.8.0'”是app level Gradle中提供的默认

  • 我一直很难找到Google Firebase身份验证背后的SLA。根据托管和实时数据库的服务水平协议,Firebase的每月正常运行时间百分比应至少达到99.95%。它是否适用于身份验证服务?

  • 我已经创建了一个android应用程序,并使用firebase作为电子邮件注册和认证的手段。注册后,用户可以在数据库中存储库存项目。所以我的问题是,如何设置firebase身份验证规则,以便特定用户只能访问他们输入的数据。现在,每个人都可以读/写数据库。我不担心写的部分,因为电子邮件认证。提前感谢! 我的数据库是这样设置的:数据库