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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3230閲覧

firebaseに設定した環境変数を使うことができない。

siophp

総合スコア23

Firebase

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2019/07/30 13:32

趣味でAPIを利用したFirebaseのアプリの開発をしています。

APIKeyが外に漏れないように環境変数に設定して利用したいのですが、firebase functions:config:setで登録はできても使用することができません。

javascript

1const functions = require('firebase-functions'); 2const request = require('request-promise'); 3 4exports.userCreated = functions.database.ref('/users/{id}').onWrite(event => { 5 let email = event.data.child('email').val(); 6 7 return request({ 8 url: 'https://someservice.com/api/some/call', 9 headers: { 10 'X-Client-ID': functions.config().someservice.id, 11 'Authorization': `Bearer ${functions.config().someservice.key}` 12 }, 13 body: {email: email} 14 }); 15});

引用 公式ドキュメント 環境の設定
公式ドキュメントには、const functions = require('firebase-functions');でfileを取得した後にfunctions.config()で環境変数を使用できると書いてあるので、参考にして

javascript

1const functions = require('firebase-functions'); 2 3const instance = new Class({ 4 key: functions.config().~.~, 5 ~~ 6});

という風に書いても、

Uncaught ReferenceError: require is not defined

と表示されます。
requireを書かない場合、functions is not defined とエラーが表示されます。

ブラウザ側でrequireを使えないと読んだので別の方法を考えないといけないと思うのですが、検索しても他の方法が出てきません。

初歩的な質問ですが、よろしければアドバイスいただけると幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

functionsの環境変数はfunctions上でしか使えませんが、 ブラウザ側でrequireを使えない ということはクライアント側で使おうとしていませんか?

投稿2019/07/30 14:53

kappa0923

総合スコア146

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

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

siophp

2019/07/31 12:56

回答ありがとうございます。おっしゃる通りでした! https://firebase.google.com/docs/functions/?authuser=0#implementation_paths こちらを参考にfunctionsファイルを作成したところ、getリクエストでレスポンスを受け取ることに成功しました。 ありがとうございました。 しかし、functions.config()の内容をfunctions以外のファイルで使いたいと考えているのですが、その方法がわからずにいます。 やりたいことは、外部に公開されているscript.jsファイルに直に書いてあるAPIkeyを外に見えないようにすることです。 今の所 1.<script src="">でブラウザから読み込んでいる内容を、functionsのファイルから読み込む。 2.読み込んだ内容とAPIkeyを利用して、APIにkeyを渡すためのインスタンスを生成する 3.functionsで生成したインスタンスを別のファイルに渡す。 4.渡したファイルとjQueryを利用してAPIを利用する の4点の作業を通して、functions.config()で取得したAPIkeyを利用できないかと考えています。 この点に関しては、質問内容から外れるので、別に質問を建てようかと考えています。
kappa0923

2019/08/01 01:27 編集

> この点に関しては、質問内容から外れるので、別に質問を建てようかと考えています。 そうですね、改めて質問を立てていただいたほうが有識者の知見が集まると思います。 ちなみに、「functions.config()の内容をfunctions以外のファイルで使いたい」となったとき、functions上のアプリケーションをWeb APIとしてデータの受け渡しは可能ですが、認証機能等を設けないのであれば「外部に公開されているscript.jsファイルに直に書いてある」のと変わりません。 やりたいことが似ている質問があったので、こちらの回答にも目を通してみてください。 https://teratail.com/questions/202331
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問