Appwrite は、アプリケーションを迅速に構築したい場合に使用するのに最適なツールです。ただし、イライラする可能性のあるエラーに遭遇することがあります。私の場合、それらのエラーは常に「ユーザー ロールが欠落しています」または「ユーザーにこれを実行する権限がありません」など。アプリのインスタンスへの完全なアクセス権を持っていても、何かを行うことができます。
しかし、最終的にそれらをすべて修正する方法を見つけました(すべてではないかもしれませんが、そう思いたいと思います)。
この Discord の投稿では、実際に非常に微妙な方法で説明しています。
問題は、これらのメソッドのいずれかを使用して、セッションが存在することを確認することです。つまり、プロジェクトで使用しているメソッドを使用します。
私がこのエラーに直面した例を示します。そうすれば、より明確になるかもしれません。
サインアップページがあり、ユーザーがアカウントの作成またはサインアップをクリックするとすぐに確認メールがトリガーされるはずですが、ユーザーが承認されていないというエラーが発生しました。解決策は、電子メールをトリガーする前にセッションを作成することでした。そのため、電子メールをトリガーする前にセッションを作成する方法を次のコードを参照してください。
"use client"; import Link from "next/link"; import { FormEvent } from "react"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { createAuthAccount } from "@/app/appwrite/createAuthAccount"; import { createLoginSession } from "@/app/appwrite/createLoginSession"; import { useRouter } from "next/navigation"; import { sendVerificationEmail } from "@/app/appwrite/sendVerificationEmail"; export const description = "A sign up form with first name, last name, email and password inside a card. There's an option to sign up with GitHub and a link to login if you already have an account"; export default function LoginForm() { const router = useRouter(); const signUpFormHandler = async (event: FormEvent) => { event.preventDefault(); const formData = new FormData(event.target as HTMLFormElement); const data = Object.fromEntries(formData.entries()); const createdAccount = await createAuthAccount({ email: data?.email.toString(), password: data?.password.toString(), name: data?.["full-name"].toString(), }); if (createdAccount?.$id) { await createLoginSession({ email: data?.email.toString(), password: data?.password.toString(), }); await sendVerificationEmail(); } }; return (); } Sign Up Enter your information to create an account Already have an account?{" "} Sign in
これは、意図された動作、何が起こっていたのか、何が行われると想定されていたのかを示す単なる例です。
私のような Appwrite の初心者がこのエラーに直面した場合に備えて、それを共有したいと思いました。全体として、スコープエラーやユーザーが許可されていないエラーが発生した場合は、ほとんどすべての場合、セッションを作成するか、少なくともそのメソッドを呼び出す前にセッションが存在していることを確認することで、それらの問題が解決されることがわかりました。ぜひこれらを試してみて、何が起こるか教えてください
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3