重定向 URL
概览
使用无密码登录或第三方提供程序时,MemFire Cloud 客户端库方法提供 redirectTo 参数,以指定身份验证后将用户重定向到的位置。默认情况下,用户将被重定向到SITE_URL,但您可以修改SITE_URL或将其他重定向 URL 添加到允许列表。将必要的 URL 添加到允许列表后,可以在 redirectTo 参数中指定希望用户重定向到的 URL。
在重定向 URL 中使用通配符
MemFire Cloud 允许您在将重定向 URL 添加到允许列表时指定通配符。您可以使用通配符匹配模式来支持来自 Netlify 和 Vercel 等提供商的预览 URL。
| Wildcard | Description | 
|---|---|
| * | 匹配任何非分隔符字符序列 | 
| ** | 匹配任意字符序列 | 
| ? | 匹配任何单个非分隔符 | 
| c | 匹配字符 c (c != *, **, ?, \, [, {, }) | 
| \c | 匹配字符 C | 
| [!{ character-range }] | 匹配不在 { 字符范围 } 中的任何字符序列。例如,[!a-z] 将不匹配 a-z 范围内的任何字符。 | 
URL 中的分隔符定义为 。和 /。使用此工具来测试您的模式。
虽然“globstar”(**) 对于本地开发和预览 URL 很有用,但我们建议为生产中的站点 URL 设置准确的重定向 URL 路径。
使用通配符重定向 URL 示例
| Redirect URL | Description | 
|---|---|
| http://localhost:3000/* | 匹配 http://localhost:3000/foo、http://localhost:3000/bar 但不匹配 http://localhost:3000/foo/bar 或 http://localhost:3000/foo/ (注意尾部斜杠) | 
| http://localhost:3000/** | 匹配 http://localhost:3000/foo、http://localhost:3000/bar 和 http://localhost:3000/foo/bar | 
| http://localhost:3000/? | 匹配 http://localhost:3000/a 但不匹配 http://localhost:3000/foo | 
| http://localhost:3000/[!a-z] | 匹配 http://localhost:3000/1 但不匹配 http://localhost:3000/a | 
Netlify 预览 URL
对于使用 Netlify 的部署,请将SITE_URL设置为官方站点 URL。为本地开发和部署预览添加以下其他重定向 URL:
- http://localhost:3000/**
- https://**--my_org.netlify.app/**
Vercel 预览 URL
对于使用 Vercel 的部署,请将SITE_URL设置为官方网站 URL。为本地开发和部署预览添加以下其他重定向 URL:
- http://localhost:3000/**
- https://*-username.vercel.app/**
Vercel 为名为 NEXT_PUBLIC_VERCEL_URL 的部署的 URL 提供了一个环境变量。有关更多详细信息,请参阅 Vercel 文档。您可以使用此变量根据环境动态重定向。您还应该设置名为 NEXT_PUBLIC_SITE_URL 的环境变量的值,这应该设置为生产环境中的站点 URL,以确保重定向正常运行。
  const getURL = () => {
  let url =
    process?.env?.NEXT_PUBLIC_SITE_URL ?? // Set this to your site URL in production env.
    process?.env?.NEXT_PUBLIC_VERCEL_URL ?? // Automatically set by Vercel.
    'http://localhost:3000/'
  // Make sure to include `https://` when not localhost.
  url = url.includes('http') ? url : `https://${url}`
  // Make sure to include a trailing `/`.
  url = url.charAt(url.length - 1) === '/' ? url : `${url}/`
  return url
}
const { data, error } = await supabase.auth.signInWithOAuth({
  provider: 'github',
  options: {
    redirectTo: getURL(),
  },
})
  
  移动深度链接 URIs
对于移动应用程序,您可以使用深层链接 URI。例如,对于您的SITE_URL,您可以指定类似 com.supabase://login-callback/ 的内容,如果需要,可以指定类似 com.supabase.staging://login-callback/ 的内容。
在此处阅读有关深度链接的更多信息,并查找不同框架的代码示例。