ホームページ  >  に質問  >  本文

firebase.auth を使用せずに Firestore で Stripe 決済を実装する方法

<p>node.js アプリで Stripe 支払いを使用して、whatsapp のユーザーに商品を販売しようとしています。 </p> <p>ストライプ拡張機能 stripe/firestore-stripe-payments@0.3.3 をインストールし、ドキュメントの指示に従いました。</p> <pre class="brush:php;toolbar:false;">const docRef = await db .collection('顧客') .doc(現在のユーザー.uid) .collection('チェックアウト_セッション') 。追加({ 価格: 'price_1GqIC8HYgolSxxxxxxxxx', success_url: window.location.origin、 cancel_url: window.location.origin, }); // 拡張機能が CheckoutSession をアタッチするのを待ちます docRef.onSnapshot((スナップ) => { const { エラー, URL } = snap.data(); if (エラー) { // クライアントにエラーを表示し、Firebase コンソールでクラウド関数のログを確認します。 alert(`エラーが発生しました: ${error.message}`); } if (URL) { // Stripe Checkout URL があるので、リダイレクトしましょう。 window.location.assign(url); } });</pre> <p>クラウド コンソールで次のエラーが表示されます: </p> <p><code>❗️[エラー]: ドキュメント [maxxxxxxxxxA] のチェックアウト セッションの作成に失敗しました: 指定された識別子には、対応するユーザー レコードがありません。 </code></p> <p>Firebase Authentication の userId を使用する必要があることがわかりましたが、サービスを関数 (バックエンド サーバー) で実行しているため、認証にはクライアント/ユーザーがありません。 </p> <p>(個別の)ストライプ チェックアウト リンクを作成する別の方法はありますか?クライアントなしで Firebase Authentication を使用する方法はありますか? </p> <p>よろしくお願いします。 </p> <p>認証を使ってみました。</p> <pre class="brush:php;toolbar:false;">import { getAuth } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser;</pre> <p>しかし、次のエラーが発生します: <code>FirebaseError: Firebase: ソース経由でホスティングにデプロイしない場合は、オプションを指定する必要があります。 (app/オプションなし)</code></p> <p>これを試してみました: https://stackoverflow.com/a/74732162/21612440</p> <p><code>TypeError を取得しました: 未定義のプロパティ 'getProvider' を読み取れません ('getProvider' を読み取ってください)</code></p>
P粉731861241P粉731861241433日前485

全員に返信(1)返信します

  • P粉821274260

    P粉8212742602023-09-02 12:36:02

    クラウド機能は (原則として)、現在認証されているユーザーのコンテキストなしで実行されます。したがって、各リクエストが異なるユーザーから送信される可能性があるため、クラウド機能では auth.currentUser はほとんど意味がありません。

    ただし、ここで任意の UID を Firestore データベースに渡すことができます (.doc(currentUser.uid))。したがって、他の (安全な) 方法で関連する UID を特定できる場合は、その値を渡すことができ、Stripe 拡張機能が その ユーザーに対してその値を処理します。

    返事
    0
  • キャンセル返事