Androidstudio(kotlin)にて、firebaseのAuthenticationで取得したuidをfirestoreのdocument名にしたい。

タイトルの通りfirebaseの機能を使ってユーザーの認証機能とユーザー情報の保存を行いたいのですが、以下のコードでは上手くいきませんでした。考えられる原因はあるでしょうか。お力を貸していただければ幸いです。

実現したいこと

ここに実現したいことを箇条書きで書いてください。
・authenticationで新たにユーザーの登録をしたさいに自動的に付与されるUIDをfirebaseのdocument名(collection名は”user")として、その下にユーザーの情報を保存したいです。

発生している問題・エラーメッセージ

以下のコードでエミュレータを起動して実際にサインアップの動作を行うとFailureListener が作動してしまい、firebase に保存されません。

該当のソースコード

var user = auth.currentUser data.collection("users") .document(user?.uid.toString()) .set(userinfo) .addOnSuccessListener { Log.d(TAG, "DodumentSnapshot written!") } .addOnFailureListener { Log.w(TAG, "Document NOT Written!") }

試したこと

公式サイトやweb上の記事にあるコードを見て、同じように入力しています。

ここにより詳細な情報を記載してください。
以下、すべてのコードを記載します。

package com.example.logintestapp

import android.content.ContentValues.TAG
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import com.example.logintestapp.databinding.ActivitySignupBinding
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.firestore.FirebaseFirestore

class Signup : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
private lateinit var data: FirebaseFirestore
private lateinit var binding: ActivitySignupBinding

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) //setContentView(R.layout.activity_signup) binding = ActivitySignupBinding.inflate(layoutInflater) val view = binding.root setContentView(view) auth = FirebaseAuth.getInstance() data = FirebaseFirestore.getInstance() binding.btregister.setOnClickListener { signupActivity() addFirestoreActivity() } binding.tx2.setOnClickListener { val intent = Intent(this, MainActivity::class.java) startActivity(intent) } } private fun signupActivity() { var emailtext: String = binding.etemail.text.toString() var passtext: String = binding.etpass.text.toString()

コメントを投稿

0 コメント