Men*_*ana 6 react-native supabase
我构建了一个如下所示的 auth 函数:
const handleLogin = async (type) => {
const { user, error } =
type === "LOGIN"
? await supabase.auth.signIn({ email, password })
: await supabase.auth.signUp({ email, password });
if (error) {
alert(error);
} else if (!user && !error) {
alert("An email has been sent to you for verification!");
}
};
Run Code Online (Sandbox Code Playgroud)
获取 jwt 并获取用户:
useEffect(() => {
async () => {
const jwt = await AsyncStorage.getItem("user");
const currentUser = supabase.auth.api.getUser(jwt)
console.log(currentUser)
}
const session = supabase.auth.session();
setUser(session?.user ?? null);
const { data: authListener } = supabase.auth.onAuthStateChange(
async (event, session) => {
const currentUser = session?.user;
await AsyncStorage.setItem("user", session.access_token);
console.log(await AsyncStorage.getItem("user"));
setUser(currentUser ?? null);
}
);
return () => {
authListener?.unsubscribe();
};
}, [user]);
Run Code Online (Sandbox Code Playgroud)
但我似乎找不到一种方法来让用户在应用程序内保持登录状态。每次重新启动时,用户都需要重新登录。
有任何想法吗?提前致谢!
小智 6
请确保使用 AsyncStorage 和以下选项实例化 supabase 客户端:
import AsyncStorage from '@react-native-async-storage/async-storage';
import { createClient } from '@supabase/supabase-js'
const supabaseUrl = YOUR_REACT_NATIVE_SUPABASE_URL
const supabaseAnonKey = YOUR_REACT_NATIVE_SUPABASE_ANON_KEY
export const supabase = createClient(supabaseUrl, supabaseAnonKey, {
localStorage: AsyncStorage as any,
autoRefreshToken: true,
persistSession: true,
detectSessionInUrl: false,
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5324 次 |
| 最近记录: |