脸书
获取你的 Facebook 凭证
要使用 Facebook 登录,你需要一个客户端 ID 和客户端密钥。你可以从 Facebook 开发者门户 获取它们。 选择你的应用,导航到 应用设置 > 基本信息,找到以下内容:
- 应用 ID:这是你的
clientId - 应用密钥:这是你的
clientSecret。
避免在客户端代码(例如前端应用)中暴露 clientSecret,因为它是敏感信息。
请确保在本地开发时将重定向 URL 设置为 http://localhost:3000/api/auth/callback/facebook。在生产环境中,你应该将其设置为你的应用的 URL。如果你更改了身份验证路由的基础路径,你也应该相应地更新重定向 URL。
配置提供程序
要配置提供程序,你需要导入该提供程序并将其传递给身份验证实例的 socialProviders 选项。
import { betterAuth } from "better-auth"
export const auth = betterAuth({
socialProviders: {
facebook: {
clientId: process.env.FACEBOOK_CLIENT_ID as string,
clientSecret: process.env.FACEBOOK_CLIENT_SECRET as string,
},
},
})BetterAuth 也支持企业版 Facebook 登录,你只需提供 Facebook 登录企业版 > 配置 中列出的 configId,以及你的 clientId 和 clientSecret。请注意,该应用必须是企业应用,并且由于 BetterAuth 需要电子邮件地址和账户 ID,因此配置必须为“用户访问令牌”类型。不支持“系统用户访问令牌”。
使用 Facebook 登录
要使用 Facebook 登录,你可以使用客户端提供的 signIn.social 函数。signIn 函数接收一个具有以下属性的对象:
provider:要使用的提供者。应设置为facebook。
import { createAuthClient } from "better-auth/auth-client"
const authClient = createAuthClient()
const signIn = async () => {
const data = await authClient.signIn.social({
provider: "facebook"
})
}额外配置
🌐 Additional Configuration
范围
🌐 Scopes
默认情况下,Facebook 提供基本的用户信息。如果你需要额外的权限,可以在你的身份验证配置中指定范围:
🌐 By default, Facebook provides basic user information. If you need additional permissions, you can specify scopes in your auth configuration:
export const auth = betterAuth({
socialProviders: {
facebook: {
clientId: process.env.FACEBOOK_CLIENT_ID as string,
clientSecret: process.env.FACEBOOK_CLIENT_SECRET as string,
scopes: ["email", "public_profile", "user_friends"], // Overwrites permissions
fields: ["user_friends"], // Extending list of fields
},
},
})附加选项:
🌐 Additional options:
scopes:访问基本账户信息(覆盖)。- 默认:
"email", "public_profile"
- 默认:
fields:扩展要从 Facebook 用户资料中获取的字段列表(任务)。- 默认:
"id", "name", "email", "picture"
- 默认:
使用 ID 或访问令牌通过 Facebook 登录
🌐 Sign In with Facebook With ID or Access Token
要使用 ID 令牌通过 Facebook 登录,你可以使用 signIn.social 函数传递 ID 令牌。
🌐 To sign in with Facebook using the ID Token, you can use the signIn.social function to pass the ID Token.
当你在客户端拥有来自 Facebook 的 ID 令牌并希望用它在服务器端登录时,这很有用。
🌐 This is useful when you have the ID Token from Facebook on the client-side and want to use it to sign in on the server.
如果提供了 ID 令牌,将不会进行重定向,用户将直接登录。
对于有限登录,你需要传递 idToken.token,仅使用 accessToken 时,你需要同时传递 idToken.accessToken 和 idToken.token,因为 (#1183)[https://github.com/better-auth/better-auth/issues/1183]。
🌐 For limited login, you need to pass idToken.token, for only accessToken you need to pass idToken.accessToken and idToken.token together because of (#1183)[https://github.com/better-auth/better-auth/issues/1183].
const data = await authClient.signIn.social({
provider: "facebook",
idToken: {
...(platform === 'ios' ?
{ token: idToken }
: { token: accessToken, accessToken: accessToken }),
},
})有关可用权限的完整列表,请参阅 权限参考。
🌐 For a complete list of available permissions, refer to the Permissions Reference.