我正在尝试实现 Facebook、Google 和 Twitter 身份验证。到目前为止,我已经在各自的开发者平台中设置了应用程序,将这些密钥/秘密添加到我的 Supabase 控制台,并创建了此 graphql 解析器:
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
import camelcaseKeys from 'camelcase-keys';
import { supabase } from 'lib/supabaseClient';
import { LoginInput, Provider } from 'generated/types';
import { Provider as SupabaseProvider } from '@supabase/supabase-js';
import Context from '../../context';
import { User } from '@supabase/supabase-js';
export default async function login(
_: any,
{ input }: { input: LoginInput },
{ res, req }: Context
): Promise<any> {
const { provider } = input;
// base level error …Run Code Online (Sandbox Code Playgroud) 我尝试过使用许多符号来分隔列;||、|、&&、&(带空格和不带空格)。
例如
.textSearch("username, title, description", "...");
.textSearch("username|title|description", "...");
Run Code Online (Sandbox Code Playgroud)
但没有任何效果:(
我希望能够将文件从 Flask 上传到 Supabase Storage,但它只有 javascript api链接的文档 docs。
另外,我找不到任何示例或任何开源项目来做到这一点。这是我的上传功能:
def upload_file(self):
if 'file' not in request.files:
flash('No file part')
return redirect('/')
file = request.files['file']
if file.filename == '':
flash('No selected file')
return redirect('/')
filename = secure_filename(file.filename)
# upload to supabase storage
return file.path
Run Code Online (Sandbox Code Playgroud) 有没有办法让用户只有拥有确切的文档 ID 才能读取文档?
我想避免创建用户,因此唯一的安全性是保存在浏览器内存中的随机 guid - 设置将保存在 id=guid 的“设置”表中。
因此,当页面打开时,它将获取
supabase.from('设置').select('*').eq('id', guid)
如何保护该设置(无需创建(虚拟)用户)
在 Firebase 中就像这样: Firebase firestore 仅允许在用户具有确切文档 ID 时读取,但对于 postgresql/supabase
我正在 NodeJS 中使用 Supabase Storage 下载媒体文件(主要是图像)from.download()。
如何将作为文件返回的 Blob 保存在本地硬盘上?
我正在尝试制作一个输入表单,用户可以在其中同时更改一行中的多个值,然后使用该update()方法将其提交到数据库。这些值作为 defaultValues 从 Supabase 表读取到多个输入字段中,用户可以编辑这些值,然后提交表单以更新表的 Supabase 实例中的值。
从用户接收到的输入值存储在具有以下形状的对象中:
inputFields = {
"name": "Piramal Glassed", // NEW
"email": "piramal@glass.com", // NEW
"contact": "98203" // NEW
"pin": 400066,
"city": "Mumbai",
"state": "Maharashtra",
"country": "India",
}
Run Code Online (Sandbox Code Playgroud)
标记为 的值// NEW是用户已更改的值,需要在 Supabase 表的后续行中更新。
我不断收到 400 错误。RLS 目前已禁用。这是我用来将数据发送回 supabase 表的函数。
const { data, error } = await supabase
.from("company")
.update([inputFields.values])
.match([originalFields.values]); // Contains Original Values Of Row That Need To Be Replaced (same shape as inputFields.values)
};
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
我正在尝试使用 Google OAuth 进行身份验证,通过supabase设置一个网站。
通过遵循本教程并查阅文档,设置起来相当简单、方便,并且工作得非常好。
但不幸的是,Google 登录页面显示“登录以继续abcdefghijklmnopqrstuvwxyz.supabase.co ”,对于不知道什么是 supabase 的用户来说,这看起来有点粗略,而且随机字符使其看起来更糟糕。并且没有明显迹象表明这实际上是用户来自并打算登录的网站。
SUPABASE 存储库上已经存在问题,因此似乎正在解决(允许在托管 SUPABASE 控制台中配置 OAuth2 重定向域 #142并使用 Google 登录显示“继续访问 Supabase.co”#1798)。
但是,我想知道是否有另一种方法可以使用 Google OAuth 与 supabase 集成,直到有合适的解决方案为止?
更新
supabase github 页面上还有两个关于此问题的问题:
javascript authentication google-authentication oauth-2.0 supabase
我有这个/app/auth/login/route.ts
import { createRouteHandlerClient } from '@supabase/auth-helpers-nextjs'
import { cookies } from 'next/headers'
import { NextResponse } from 'next/server'
export async function POST(request: Request) {
const requestUrl = new URL(request.url)
const formData = await request.formData()
const email = String(formData.get('email'))
const password = String(formData.get('password'))
const cookieStore = cookies()
const supabase = createRouteHandlerClient({ cookies: () => cookieStore })
await supabase.auth.signInWithPassword({
email,
password,
})
return NextResponse.redirect(requestUrl.origin, {
status: 301,
})
}
Run Code Online (Sandbox Code Playgroud)
以及/app/login/page.tsx上的页面
import Link from "next/link";
export default function LoginPage() { …Run Code Online (Sandbox Code Playgroud) 我\xe2\x80\x99m 使用 Kotlin 处理 Android 项目,并使用 Dagger Hilt 进行依赖注入。最近,我\xe2\x80\x99ve尝试从kapt迁移到KSP(Kotlin符号处理)来生成代码,因为kapt现在处于\xe2\x80\x9c维护模式\xe2\x80\x9d。但是,我\xe2\x80\x99ve遇到了一个问题:KSP未检测到Dagger Hilt注释,例如@Inject,@Binds和@Module,并且我\xe2\x80\x99m得到了\xe2\x80\ x9c无法解析符号\xe2\x80\x9d错误。
\n我正在使用 \xe2\x80\x9c Framework Quickstarts: Use Supabase with Android Kotlin \xe2\x80\x9d 文档测试与 Supabase 的连接,您可以在其中找到代码。我的 build.gradle.kts(模块):
\nplugins {\n id("com.android.application")\n id("org.jetbrains.kotlin.android") version "1.9.20"\n id ("com.google.relay") version "0.3.10"\n kotlin("plugin.serialization") version "1.9.0"\n id ("com.google.devtools.ksp") version "1.9.20-1.0.14"\n}\n\nandroid {\n namespace = "xxxxxxxxxxx"\n compileSdk = 34\n\n defaultConfig {\n applicationId = "xxxxxxxxxxxx"\n minSdk = 24\n targetSdk = 33\n versionCode = 1\n versionName = "1.0"\n\n testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"\n }\n\n buildTypes {\n release {\n isMinifyEnabled = false\n proguardFiles(\n …Run Code Online (Sandbox Code Playgroud) 我正在使用 Postgres(通过 Supabase)和 Node(通过 Vercel 上的 NextJS)。
我有一个表report,其中包含枚举列region,并且generated_text是由人工智能生成的内容。
create type region as enum (
'America',
'Europe',
'Asia',
'Africa'
);
create table report (
id serial primary key,
region region,
generated_text: text
);
Run Code Online (Sandbox Code Playgroud)
用户选择他们的区域,然后购买报告。购买记录在连接表中report_user。
create table report_user(
id serial primary key,
report uuid NOT NULL,
user: uuid NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
当用户进行购买时:
report用户之前未购买过的行,则该行将返回给他们。generated_text该请求非常慢并且用户体验很差。我想提高用户的速度,这只能通过report在需要之前创建行来完成。我可以批量创建一些,但我不知道哪些区域会更受欢迎(我简化了我的示例,我的实际应用程序有更多的过滤器,因此有很多潜在的组合)。
report 当用户购买了report特定过滤器的所有行时,有没有办法运行后台任务来创建新任务region?
supabase ×10
javascript ×3
postgresql ×3
next.js ×2
node.js ×2
typescript ×2
android ×1
blob ×1
buffer ×1
dagger-hilt ×1
flask ×1
kotlin ×1
oauth-2.0 ×1
python ×1
reactjs ×1
vercel ×1