「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > [解決済み] Appwrite ユーザー ロールが見つからない、またはスコープが見つからないエラー

[解決済み] Appwrite ユーザー ロールが見つからない、またはスコープが見つからないエラー

2024 年 11 月 8 日に公開
ブラウズ:542

[Solved] Appwrite user role missing or missing scope errors

Appwrite は、アプリケーションを迅速に構築したい場合に使用するのに最適なツールです。ただし、イライラする可能性のあるエラーに遭遇することがあります。私の場合、それらのエラーは常に「ユーザー ロールが欠落しています」または「ユーザーにこれを実行する権限がありません」など。アプリのインスタンスへの完全なアクセス権を持っていても、何かを行うことができます。

しかし、最終的にそれらをすべて修正する方法を見つけました(すべてではないかもしれませんが、そう思いたいと思います)。

この Discord の投稿では、実際に非常に微妙な方法で説明しています。

問題は、これらのメソッドのいずれかを使用して、セッションが存在することを確認することです。つまり、プロジェクトで使用しているメソッドを使用します。

  • 匿名セッションの作成
  • メールパスワードセッションの作成
  • OAuth2セッションの作成
  • セッションの作成

私がこのエラーに直面した例を示します。そうすれば、より明確になるかもしれません。

サインアップページがあり、ユーザーがアカウントの作成またはサインアップをクリックするとすぐに確認メールがトリガーされるはずですが、ユーザーが承認されていないというエラーが発生しました。解決策は、電子メールをトリガーする前にセッションを作成することでした。そのため、電子メールをトリガーする前にセッションを作成する方法を次のコードを参照してください。

"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 の初心者がこのエラーに直面した場合に備えて、それを共有したいと思いました。全体として、スコープエラーやユーザーが許可されていないエラーが発生した場合は、ほとんどすべての場合、セッションを作成するか、少なくともそのメソッドを呼び出す前にセッションが存在していることを確認することで、それらの問題が解決されることがわかりました。ぜひこれらを試してみて、何が起こるか教えてください

リリースステートメント この記事は次の場所に転載されています: https://dev.to/kaushal01/solved-appwrite-user-role-missing-or-missing-scope-errors-59d3?1 権利侵害がある場合は、[email protected] までご連絡ください。それを削除するには
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3