はじめまして。
最近ChatGPTを使ってインディーズゲーム制作に目覚めたHirotoと申します。
今回はChatGPT o3 mini-highとFirebase,Stripeを使って、サーバーを自分でレンタルまたは購入することなく月額課金制オンラインRPGを作った話をしようと思います。
できたゲームは以下
https://codequest-e825e.web.app/
(まだ課金はテスト中なのとゲーム内容はかすっかす)
今回から躓いた点などをQiitaで共有していきたいと思います。
・躓いた点1
・Firebaseのメール認証機能がうまく動作しない
基本的にChatGPTにすべてを聞きながらFirebaseのデフォルト設定でログイン画面を追加したのですが、どうもうまくいきませんでした。
英語の文献を探しまくった結果、どうも以下の「メール列挙保護(推奨)」のチェック項目を外すといいそうです。
これで普通のログインができるようになりました!
でも、推奨って書いてあるけど大丈夫?って話ですが、メール列挙保護って何?って方は以下の説明を読んでください。
メール列挙保護とは(以下ChatGPT)
「メール列挙保護」とは、ウェブサイトやオンラインサービスにおいて、攻撃者がシステム内の有効なメールアドレスを自動的または体系的に抽出(列挙)するのを防ぐためのセキュリティ対策のことです。
主なポイント
メールアドレスの保護:
ユーザーのメールアドレスが悪意のある第三者に大量に収集されると、スパムメールの送信やフィッシング詐欺などのリスクが高まります。メール列挙保護は、こうしたリスクを低減するための重要な手法です。自動化ツール対策:
ボットやスクリプトによる自動化されたアクセスから、メールアドレスを抽出されるのを防止するため、CAPTCHA(画像認証)やレートリミッティング(一定期間内のアクセス回数制限)などの技術が使用されることが一般的です。エラーメッセージの工夫:
例えば、ユーザー登録やパスワード再設定時に、「入力されたメールアドレスは存在しません」と明確に返答するのではなく、常に同じ曖昧なメッセージを返すことで、攻撃者が有効なメールアドレスを推測できないようにする方法も取られます。このように、メール列挙保護は、個人情報の漏洩を防ぎ、ユーザーのプライバシーとセキュリティを確保するための重要な対策となっています。
つまりはログイン時のエラーメッセージを元にして有効なメールアドレスを推測されるのを防ごうってわけですね!
でも、現状うまく機能していないのでOFFにしてOKです。(しらんけど)
・躓いた点2
Firebase側とStripeの連携が難しい!!
2日かけてChatGPTと戦いましたが、FirebaseのFunctions機能を使うとき、バージョン1を使わないとうまくいかないことがありました。
具体的にはもう忘れましたがよくわからんエラーが出るときは以下のコードでFirebaseのV1を使うようにするとうまくいくことがあります。
// functions/index.js
const functions = require("firebase-functions/v1");
まとめ
・Firebaseのメール列挙保護を切る
・Functionsを使ってよくわからんエラーが出るときはV1を使う
他にも色々躓きましたがだいたいはChatGPT先生がうまくやってくれました。
それではクソゲーをお楽しみください。
【古き良きテキストベースRPG コードクエスト】