Appwrite é uma ferramenta incrível para usar se você deseja construir aplicativos rapidamente, mas às vezes você pode encontrar erros que podem ser frustrantes e para mim esses erros sempre foram sobre "Função do usuário ausente" ou "usuário não autorizado a fazer isso" etc. Mesmo que eu tenha acesso total a qualquer instância do meu aplicativo fazendo qualquer coisa.
Mas finalmente encontrei uma maneira de consertar todos eles (bem, talvez não todos, mas gostaria de pensar assim).
Então, esta postagem do discord explicou isso de uma forma muito sutil.
O problema é garantir que haja uma sessão usando qualquer um desses métodos, quero dizer, o que você estiver usando em seu projeto.
Deixe-me dar um exemplo de onde enfrentei esse erro, então pode ficar mais claro.
Eu tinha uma página de inscrição e o que quero fazer é que, assim que o usuário clicar em criar conta ou inscrição, ele deverá acionar um e-mail de verificação, mas estava recebendo o erro de que o usuário não está autorizado. A solução foi criar uma sessão antes de disparar o email, então veja no código a seguir como estou criando a sessão antes de disparar o email:
"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
Este é apenas um exemplo que descreve qual era o comportamento pretendido, o que estava acontecendo e o que deveria ser feito.
Só queria compartilhá-lo caso algum novo iniciante no Appwrite como eu enfrente esse erro. Resumindo, descobri que em quase todos os casos, quando estou recebendo erros de escopo ou erros de usuário não autorizado, criar uma sessão ou pelo menos certificar-me de que uma sessão existe antes de chamar esse método corrigiu esses problemas. Então experimente e me diga o que acontece
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3