teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

Lhankor_Mhyさんにいただいた指摘で、内容を変更しました。

2021/03/27 03:50

投稿

ryota002
ryota002

スコア20

title CHANGED
File without changes
body CHANGED
@@ -147,4 +147,77 @@
147
147
 
148
148
  javascript
149
149
  node.js v12
150
- firebase Authentication
150
+ firebase Authentication
151
+
152
+ ### 上手く行ったコード
153
+
154
+ > signup.js
155
+ ```js
156
+ "use strict";
157
+
158
+ import createUserData from "../createUserData.js";
159
+ import twitterOAuth from "../twitterOAuth.js";
160
+ import monitorLoginStatus from "../monitorLoginStatus.js";
161
+
162
+ const twitterSignup = () => {
163
+ const signUpButton = document.getElementById("signup");
164
+
165
+ signUpButton.addEventListener("click", () => {
166
+ twitterOAuth()
167
+ .then((userData) => {
168
+ console.log("signup関数の中", userData);
169
+ return createUserData(userData);
170
+ })
171
+ .then(() => {
172
+ console.log("monitorの前のログ");
173
+ monitorLoginStatus().then((loginStatus) => {
174
+ if (loginStatus) {
175
+ // location.replace("../../admin.html");
176
+ }
177
+ });
178
+ });
179
+ });
180
+ };
181
+
182
+ export default twitterSignup;
183
+ ```
184
+
185
+ > createUserData.js
186
+ ```js
187
+ "use strict";
188
+
189
+ const db = firebase.firestore();
190
+
191
+ const createUserData = (userData) => {
192
+ const uids = [];
193
+
194
+ return db
195
+ .collection("User")
196
+ .get()
197
+ .then((querySnapshot) => {
198
+ querySnapshot.forEach((doc) => {
199
+ uids.push(doc.data().uid);
200
+ });
201
+ })
202
+
203
+ .catch((error) => {
204
+ console.error("Error getting documents: ", error);
205
+ })
206
+ .then(() => {
207
+ const userRegistration = uids.includes(userData.uid);
208
+
209
+ if (!userRegistration) {
210
+ console.log("新規ユーザー。作る!");
211
+ console.log(userData);
212
+ db.collection("User")
213
+ .doc(userData.uid)
214
+ .set(userData)
215
+ .catch((error) => console.error(error));
216
+ } else {
217
+ console.log("既にユーザーある");
218
+ }
219
+ });
220
+ };
221
+
222
+ export default createUserData;
223
+ ```

3

更新

2021/03/27 03:50

投稿

ryota002
ryota002

スコア20

title CHANGED
File without changes
body CHANGED
@@ -55,7 +55,7 @@
55
55
  signUpButton.addEventListener("click", async () => {
56
56
  const userData = await twitterOAuth();
57
57
  console.log("signup関数の中", userData);
58
- createUserData(userData);
58
+ await createUserData(userData);
59
59
  console.log("monitorの前のログ");
60
60
  monitorLoginStatus().then((loginStatus) => {
61
61
  if (loginStatus) {

2

更新

2021/03/27 03:05

投稿

ryota002
ryota002

スコア20

title CHANGED
File without changes
body CHANGED
@@ -53,10 +53,9 @@
53
53
  const signUpButton = document.getElementById("signup");
54
54
 
55
55
  signUpButton.addEventListener("click", async () => {
56
- await twitterOAuth().then((userData) => {
56
+ const userData = await twitterOAuth();
57
- console.log("signup関数の中", userData);
57
+ console.log("signup関数の中", userData);
58
- createUserData(userData);
58
+ createUserData(userData);
59
- });
60
59
  console.log("monitorの前のログ");
61
60
  monitorLoginStatus().then((loginStatus) => {
62
61
  if (loginStatus) {
@@ -67,6 +66,7 @@
67
66
  };
68
67
 
69
68
  export default twitterSignup;
69
+
70
70
  ```
71
71
 
72
72
  > signup.js

1

async/awaitで記載したものを追記しました。

2021/03/27 03:04

投稿

ryota002
ryota002

スコア20

title CHANGED
File without changes
body CHANGED
@@ -41,6 +41,34 @@
41
41
 
42
42
  ### 該当のソースコード
43
43
 
44
+ > signup.js(async/await)
45
+ ```js
46
+ "use strict";
47
+
48
+ import createUserData from "../createUserData.js";
49
+ import twitterOAuth from "../twitterOAuth.js";
50
+ import monitorLoginStatus from "../monitorLoginStatus.js";
51
+
52
+ const twitterSignup = () => {
53
+ const signUpButton = document.getElementById("signup");
54
+
55
+ signUpButton.addEventListener("click", async () => {
56
+ await twitterOAuth().then((userData) => {
57
+ console.log("signup関数の中", userData);
58
+ createUserData(userData);
59
+ });
60
+ console.log("monitorの前のログ");
61
+ monitorLoginStatus().then((loginStatus) => {
62
+ if (loginStatus) {
63
+ // location.replace("../../admin.html");
64
+ }
65
+ });
66
+ });
67
+ };
68
+
69
+ export default twitterSignup;
70
+ ```
71
+
44
72
  > signup.js
45
73
  ```js
46
74
  "use strict";