質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

Q&A

解決済

1回答

914閲覧

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

bakunew

総合スコア1

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

0グッド

0クリップ

投稿2022/12/03 09:38

タイトルの通り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()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

var user = auth.currentUser
data.collection("users").document(user?.uid.toString())

あまり自信ないですが、記載されている上記コードだとauth.currentUserがnullで返ってしまう場合があるからではないでしょうか?

if (user != null) { ... }

とかで分岐したらうまくいくかもしれないです!

投稿2022/12/10 17:55

ams2020

総合スコア120

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bakunew

2022/12/20 14:56

ご回答いただきありがとうございます。 最初上手くいかなかったため新しいプロジェクトを作成し、試したところ上手くいきました! ただこの場合、問題があるのはどういった箇所になるのでしょうか。 重ねての質問で申し訳ありません。 もしよろしければ教えていただきたいです。よろしくお願いします。
bakunew

2022/12/21 14:02

回答いただきありがとうございました。 Firebase側のルールの部分にも問題があったようで、無事解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問