概览

使用无密码登录第三方提供程序时,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 中的分隔符定义为 。和 /。使用此工具来测试您的模式。

使用通配符重定向 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/ 的内容。

在此处阅读有关深度链接的更多信息,并查找不同框架的代码示例。