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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Firebase

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

3413閲覧

firebaseでadmin.auth()が出来ません、TypeError: _plugins_firebaseAdmin__WEBPACK_IMPORTED_MODULE_2__.auth is n

tenlife

総合スコア70

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Firebase

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

1クリップ

投稿2021/07/01 04:44

firebaseをvueで使用する際にadminを呼び出す部分で詰まっています。

本体であれば、admin.auth().getUser(uid) で値を取得するところですが、admin.auth()を呼び出すことができません。

console

1======== WARNING! ======== 2 3firebase-admin appears to have been installed in an unsupported environment. 4This package should only be used in server-side or backend Node.js environments, 5and should not be used in web browsers or other client-side environments. 6 7Use the Firebase JS SDK for client-side Firebase integrations: 8 9Uncaught TypeError: getCurves is not a function 10 11firebaseAdminでのconsole.log(admin) 12auth: [Exception: TypeError: getCurves is not a function at eval 13 14vueでのconsole.log(admin) 15Auth: undefined 16arguments: [Exception: TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them at 17 18vueでのconsole.log(admin.auth())の場合 19TypeError: _plugins_firebaseAdmin__WEBPACK_IMPORTED_MODULE_2__.auth is not a function"

vue

1<script lang="ts"> 2import { defineComponent } from "@vue/composition-api"; 3import firebase from "../../../plugins/firebase"; 4import * as admin from "../../../plugins/firebaseAdmin"; 5 6export default defineComponent({ 7 mounted: function () { 8 console.log(admin) 9 }, 10}

packagejson

1"dependencies": { 2 "core-js": "^3.6.5", 3 "firebase": "^8.6.8", 4 "firebase-admin": "^9.10.0", 5 "firebase-functions": "^3.14.1", 6 "vue": "^2.6.11", 7 },

firebaseAdmin

1import * as admin from "firebase-admin"; 2 3import serviceAccount from "../config/firebase-admin.json" 4 5admin.initializeApp({ 6 credential: admin.credential.cert(serviceAccount), 7 databaseURL: "https://hoge.com", 8}); 9 10console.log(admin.auth()) 11 12export default admin

firebase

1import firebase from "firebase" 2 3const firebaseConfig = { 4 apiKey: process.env.API_KEY, 5 authDomain: process.env.AUTH_DOMAIN, 6 databaseURL: process.env.DATABASE_URL, 7 projectId: process.env.PROJECT_ID, 8 storageBucket: process.env.STORAGE_BUCKET, 9 messagingSenderId: process.env.MESSAGING_SENDER_ID, 10 appId: process.env.APP_ID, 11}; 12firebase.initializeApp(firebaseConfig); 13 14export default firebase

main

1import Vue from "vue"; 2import App from "./App.vue"; 3 4Vue.config.productionTip = false; 5 6new Vue({ 7 render: (h) => h(App), 8}).$mount("#app");

firebase自体は繋がります。
../config/firebase-admin.jsonにも記載はされていて参照できていると思います。
getCurves is not a functionと表示されていますが、そんな関数は定義していません。

以下2つを参考に進めましたが、consoleのエラーに悩まされています。
https://firebase.google.com/docs/admin/setup?hl=ja#prerequisites
https://firebase.google.com/docs/auth/admin/manage-users?hl=ja#node.js

どなたか知見のある方いましたら教えていただきたいです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

あなたが質問に貼っているwarning文にも書いてある通り、firebase-adminはサーバー用であって、vueなどのクライアント側で使うものではありません。

クライアント側ではこれを使ってください。

https://www.npmjs.com/package/firebase

投稿2021/07/01 04:56

arark

総合スコア69

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

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

tenlife

2021/07/01 06:23

回答ありがとうございます。 提示されたリンク先のfirebase.auth()だとgetUser(uid)のような特定のユーザー(authenticationに存在している)を取得する方法が見つかりません。 このような場合はrailsなどのバックエンドを使用するような形でしょうか。
arark

2021/07/01 08:51

クライアント側からauthenticationしたユーザーの情報を勝手に取得できたらそれはセキュリティ的に問題なのでできないようになっています。 getUser(uid)の代替手段はユースーケースによって大きく変わりますが、 1. firestoreなどに適切にsecurity rulesを指定して情報を持っておく 2. firebase functionsでfirebase-adminを使う 3. railsなどの自前サーバーでfirebase-adminを使う などが例としてあげられます。
tenlife

2021/07/01 09:13

返信ありがとうございます。 3つの案ありがとうございます 参考に進めていこうと思います! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問