Discord

Discord 提供程序的设置和使用。

获取 Discord 凭证

要使用 Discord 登录,您需要客户端 ID 和客户端密钥。您可以从 Discord 开发者门户 获取它们。

请确保将重定向 URL 设置为 http://localhost:3000/api/auth/callback/discord,用于本地开发。对于生产环境,您应将其设置为应用程序的 URL。如果更改了认证路由的基本路径,您应该相应地更新重定向 URL。

配置提供程序

要配置提供程序,您需要导入提供程序并将其传递给认证实例的 socialProviders 选项。

auth.ts
import { betterAuth } from "better-auth"

export const auth = betterAuth({ 
    socialProviders: {
        discord: { 
            clientId: process.env.DISCORD_CLIENT_ID as string, 
            clientSecret: process.env.DISCORD_CLIENT_SECRET as string, 
        }, 
    },
})

对于仅有手机号的账户,即使授予了 email 范围,Discord 也会返回 email: null。请参阅 处理没有邮箱的提供程序,了解推荐的 mapProfileToUser 回退方案。

使用

使用 Discord 登录

要使用 Discord 登录,您可以使用客户端提供的 signIn.social 函数。signIn 函数接受一个包含以下属性的对象:

  • provider:要使用的提供程序。应设置为 discord。
auth-client.ts
import { createAuthClient } from "better-auth/client"

const authClient = createAuthClient()

const signIn = async () => {
    const data = await authClient.signIn.social({
        provider: "discord"
    })
}

选项

有关所有社交提供程序支持的完整选项列表,请查看 提供程序选项。

机器人权限(可选)

如果在 Discord OAuth 中使用了 bot 范围,可以使用 permissions 选项指定机器人权限。它可以是一个按位值(例如 2048 | 16384 表示发送消息和嵌入链接),或一个特定的权限值(例如 16384 表示嵌入链接)。

auth.ts
import { betterAuth } from "better-auth"

export const auth = betterAuth({ 
    socialProviders: {
        discord: {
            clientId: process.env.DISCORD_CLIENT_ID as string,
            clientSecret: process.env.DISCORD_CLIENT_SECRET as string,
            permissions: 2048 | 16384, // 发送消息 + 嵌入链接
        }, 
    },
})

注意: permissions 参数仅在 OAuth2 范围中包含 bot 时才有效。有关 Discord 机器人权限的更多信息,请查阅 Discord 机器人权限。