Slack
Slack 提供者的设置和使用说明。
获取你的 Slack 凭证
要使用 Slack 作为社交提供者,你需要创建一个 Slack 应用并获取你的凭证。
- 前往 Slack API 的应用页面 并点击“创建新应用”
- 选择“从零开始”,为你的应用命名并选择一个开发工作区
- 在应用设置中,导航到“OAuth & Permissions”
- 在“重定向 URL”下,添加你的重定向 URL:
- 开发环境:
http://localhost:3000/api/auth/callback/slack - 生产环境:
https://yourdomain.com/api/auth/callback/slack
- 开发环境:
- 从“基本信息”页面复制你的客户端 ID 和客户端密钥
在生产环境中,Slack 要求重定向 URL 使用 HTTPS。在本地开发时,你可以使用 ngrok 等工具创建安全隧道。
配置提供者
要配置该提供者,需要将 clientId 和 clientSecret 传递给 socialProviders.slack:
import { betterAuth } from "better-auth"
export const auth = betterAuth({
socialProviders: {
slack: {
clientId: process.env.SLACK_CLIENT_ID as string,
clientSecret: process.env.SLACK_CLIENT_SECRET as string,
},
},
})使用
使用 Slack 登录
要使用 Slack 登录,可以调用客户端提供的 signIn.social 函数。signIn 接受一个包含以下属性的对象:
provider:要使用的提供者,应设置为slack。
import { createAuthClient } from "better-auth/client";
const authClient = createAuthClient();
const signIn = async () => {
const data = await authClient.signIn.social({ provider: "slack" });
};请求额外权限范围
默认情况下,Slack 使用 OpenID Connect 权限范围:openid、profile 和 email。你可以在登录时请求额外的 Slack 权限:
const signInWithSlack = async () => {
await authClient.signIn.social({
provider: "slack",
scopes: ["channels:read", "chat:write"], // 额外的 Slack API 权限
});
};限定工作区登录
如果你想限制登录到特定的 Slack 工作区,可以传递 team 参数:
socialProviders: {
slack: {
clientId: process.env.SLACK_CLIENT_ID as string,
clientSecret: process.env.SLACK_CLIENT_SECRET as string,
team: "T1234567890", // 你的 Slack 工作区 ID
},
}登录后使用 Slack API
认证成功后,你可以通过会话访问用户的 Slack 信息。访问令牌可用于向 Slack API 发起请求:
const session = await authClient.getSession();
if (session?.user) {
// 访问 Slack 特定数据
const slackUserId = session.user.id; // 这是 Slack 用户 ID
// 访问令牌安全存储于服务器端
}Slack 提供者默认使用 OpenID Connect,它提供了基础的用户信息。如果需要访问其他 Slack API,请确保在登录时请求相应的权限范围。