You need to enable JavaScript to run this app.
文档中心
AI 原生 BaaS 平台 Supabase 版

AI 原生 BaaS 平台 Supabase 版

复制全文
下载 pdf
使用 Authentication
设置企业微信授权登录
复制全文
下载 pdf
设置企业微信授权登录
本文介绍通过 Supabase 控制台和 Admin API 配置为应用配置企业微信(下文简称“企微”)登录的操作流程。​
前提条件​
​
  • 已创建使用 Supabase 引擎的 Workspace 且 Workspace 的状态为运行中。关于创建 Workspace 的更多详细信息,请参见创建 Workspace。​
  • 已通过目标 Workspace 成功登录 Supabase 控制台。关于登录控制台的详细信息,请参见登录 Supabase 控制台。​
  • 已获取 SUPABASE_BASE_URL、SERVICE_ROLE_KEY和 SUPABASE_ANON_KEY。关于获取变量的详细信息,请参见获取变量。​
注意事项​
  • 企微开放平台的限制和回调路由​
  • 限制: 企微开放平台会强制校验“授权回调域名”的所有者,即在配置“授权回调域名”时,开发者必须在域名根目录下放置指定名称和内容的文件(具体请参考企微开启网页授权登录中“授权回调域名”相关章节)。因此,“授权回调域名”只能配置为开发者自己的域名,无法配置为 Supabase 的域名。​
  • 回调路由:由于上述限制,企微开放平台登录的 OAuth 回调路由只能是:企微开放平台 --(重定向)--> 开发者域名下的服务 Callback 接口 --(重定向)--> Supabase Callback 接口。并且,在重定向时,开发者域名下的 Callback 接口需要将回调请求的所有参数(包括 Query Parameters、Header、Body 等)透传给 Supabase Callback 接口。​
  • 支持的企微授权登录方式:Supabase 目前支持两种企微授权登录方式,这两种方式调用 signInWithOAuth 接口参数略有差异,开发者需要自行判断浏览器环境,并根据所处环境传入不同的参数值。可参考判断企微授权登录环境。​
在 Supabase 控制台查询和修改配置​
  1. 在企微开放平台配置“授权回调域名”。​
参考企微开启网页授权登录中“授权回调域名”相关章节,配置您的回调域名。企微开放平台的回调域名必须是开发者名下的域名。​
  1. 将回调域名的 Callback 接口 重定向到 Supabase Callback 接口。​
参考企微开放平台的限制和回调路由的说明,您的回调域名的 Callback 接口需要实现到 Supabase Callback 接口的重定向功能。​
Supabase 的 Callback URL 为 $SUPABASE_BASE_URL/auth/v1/callback,例如 https://br-xxxx.supabase.aidap-global.cn-beijing.volces.com/auth/v1/callback。​
  1. 将火山 Supabase 的出口 IP 加入到企微应用后台的 IP 白名单中。​
  • ​
    地域​
    火山引擎 Supabase 服务的出口 IP​
    华北 2(北京)​
    115.190.189.99​
    ​
  1. 查询和修改配置。​
  1. 在 Supabase 控制台查询和修改配置。​
  1. 完成微信登录设置。​
  1. 进入 Supabase 控制台后,您需要配置企微作为 OAuth 2.0 提供商,并填入相应的凭证。​
  1. 进入页面 Authentication > Sign In / Providers > WeCom。勾选 Enable WeCom provider,并填入从企微后台管理的获取的 Corp ID 和 secret,以及 Callback URL。​
说明​
如果您的企微用户没有配置企业邮箱,请勾选 Allow users without an email。​
  1. (可选)如果您需要使用扫码登录功能,则需要需额外配置 agentid。更多详细信息,请参见 Web 登录组件与术语介绍。​
  1. 配置重定向白名单​
  • 进入页面 Authentication > URL Configurations,将您的应用的 URL(登录成功后的跳转目标,精确到 path) 配置到 Redirect URLs 中。​
  • ​​​
  • ​​​
主要配置项说明​
​
Dashobard 配置项名称​
配置项 Key​
配置项 Value 类型​
是否必填​
配置项说明​
Enable WeCom provider​
EXTERNAL_WECOM_ENABLED​
bool​
是​
是否开启企微注册登录。取值:​
  • true:开启企微注册登录。​
  • false:关闭企微注册登录。​
WeCom Corp ID​
​
EXTERNAL_WECOM_CLIENT_ID​
string​
是​
企微后台管理的中的 Corp ID。​
WeCom Corp Secret​
​
EXTERNAL_WECOM_SECRET​
string​
是​
企微后台管理的中的应用 Secret。​
Allow users without an email​
EXTERNAL_WECOM_EMAIL_OPTIONAL​
bool​
否​
是否允许用户邮箱为空。取值:​
  • true:允许用户邮箱为空。​
  • false:不允许用户邮箱为空。​
​
Callback URL (for OAuth)​
EXTERNAL_WECOM_REDIRECT_URI​
string​
是​
OAuth 回调地址。开发者域名下的服务回调地址,参见企微开放平台的限制和回调路由。​
Redirect URLs​
URI_ALLOW_LIST​
string​
​
允许重定向的目标 URL 列表。​
  • 需要与跳转目标 URL 完全一致,精确到 path。​
  • 多个时以逗号分隔,形如:http://www.app1.com/home,https://www.app2.com。​
​
通过 Admin API 查询和修改配置​
上述参数可以通过 Auth 模块的 Admin API /auth/v1/config 进行查询和修改配置。​
  • 查询配置的示例​
​
curl -X GET $SUPABASE_BASE_URL/auth/v1/config \​
-H "apikey: ${SERVICE_ROLE_KEY}" \​
-H "Authorization: Bearer ${SERVICE_ROLE_KEY}" \​
-H "Content-Type: application/json"​
​
  • 修改配置的示例,其中 body 为上节表格中的 配置项 Key 和 配置项 Value 组成的 JSON Map​
​
curl -X PATCH $SUPABASE_BASE_URL/auth/v1/config \​
-H "apikey: ${SERVICE_ROLE_KEY}" \​
-H "Authorization: Bearer ${SERVICE_ROLE_KEY}" \​
-H "Content-Type: application/json" \​
-d '{​
"EXTERNAL_WECOM_ENABLED": true,​
"EXTERNAL_WECOM_CLIENT_ID": "mywecomcorpid",​
"EXTERNAL_WECOM_SECRET": "mywecomcorpsecret",​
"EXTERNAL_WECOM_EMAIL_OPTIONAL": "true",​
"URI_ALLOW_LIST": "http://www.app1.com/home,https://www.app2.com",​
...​
}'​
​
示例——通过 Supabase Client SDK 进行微信登录的示例​
Supabase 提供了统一的 signInWithOAuth 方法来微信登录,但根据使用浏览器环境的不同,分为两种模式。​
场景一:在企微内嵌浏览器网页授权登录​
此场景适用于用户在企微客户端内部打开您的网页应用,单击登录时,会直接拉起微信授权界面。​
实现方式:调用 signInWithOAuth 函数,需要将 provider 指定为 wecom。在 options 中无需显式指定 scopes 字段。​
​
// 在企业微信内嵌浏览器中发起登录(H5 授权)​
async function loginWithWeComEmbedded() {​
try {​
const { error } = await supabase.auth.signInWithOAuth({​
provider: 'wecom',​
options: {​
redirectTo: 'https://www.examples.com/', // 登录成功后的重定向地址​
// H5 场景一般不需要传 scopes: 'qr_connect'​
},​
})​
​
if (error) throw error​
} catch (error) {​
console.error('企业微信 H5 授权登录失败:', error)​
}​
}​
​
场景二:在 PC 浏览器网页扫码授权登录​
此场景适用于在 PC 浏览器中访问的独立网站。在用户选择企微登录后,页面会生成一个二维码,用户使用企微 APP 扫描该二维码后完成授权登录。​
实现方式:调用 signInWithOAuth 函数时,除了将 provider 指定为 wecom 之外,还需要在 options 中指定 scopes 为 qr_connect。​
​
// 在 PC / 普通浏览器页面发起企业微信扫码登录(可选示例)​
async function loginWithWeComQR() {​
try {​
const { error } = await supabase.auth.signInWithOAuth({​
provider: 'wecom',​
options: {​
redirectTo: 'https://www.examples.com/',​
scopes: 'qr_connect', // 扫码登录​
},​
})​
​
if (error) throw error​
} catch (error) {​
console.error('企业微信扫码登录失败:', error)​
}​
}​
​
最佳实践:自动判断浏览器环境确定企微授权登录参数​
为了让您的应用同时支持上述两种“企微授权登录”场景,可以通过检测浏览器的 navigator.userAgent 里是否包含 wxwork 来判断当前的浏览器环境(参见下述 isWeComEmbeddedBrowser 函数),从而实现一套代码支持多场景登录。​
​
// 判断是否在企业微信内嵌浏览器中​
function isWeComEmbeddedBrowser() {​
// 企业微信内置浏览器 UA 通常包含 wxwork​
return /wxwork/i.test(navigator.userAgent || '')​
}​
​
// 统一的企业微信登录函数(H5 内嵌浏览器走“内嵌授权”;外部浏览器走“扫码”)​
async function loginWithWeCom() {​
try {​
const options = { redirectTo: 'https://www.examples.com/' }​
​
// 如果不是在企业微信内嵌浏览器中,则添加扫码登录所需的 scopes​
// Supabase wecom provider:扫码用 qr_connect​
if (!isWeComEmbeddedBrowser()) {​
options.scopes = 'qr_connect'​
}​
​
const { error } = await supabase.auth.signInWithOAuth({​
provider: 'wecom',​
options,​
})​
​
if (error) throw error​
} catch (error) {​
console.error('企业微信登录失败:', error)​
// 在界面上显示错误提示​
}​
}​
​
​
最近更新时间:2026.08.05 14:24:18
这个页面对您有帮助吗?
有用
有用
无用
无用