跳至内容
从 NextAuth.js v4 迁移?阅读 我们的迁移指南.

providers/bungie

内置 Bungie 集成。

default()

default(options): OAuthConfig<Record<string, any>>

在您的页面上添加 Bungie 登录。

设置

回调 URL

https://example.com/api/auth/callback/bungie

配置

import { Auth } from "@auth/core"
import Bungie from "@auth/core/providers/bungie"
 
const request = new Request(origin)
const response = await Auth(request, {
  providers: [
    Bungie({
      clientId: BUNGIE_CLIENT_ID,
      clientSecret: BUNGIE_CLIENT_SECRET,
      headers: { "X-API-Key": BUNGIE_API_KEY },
    }),
  ],
})

资源

配置

💡

Bungie 要求所有网站运行 HTTPS(包括本地开发实例)。

💡

Bungie 不允许您使用 localhost 作为网站 URL,您需要使用 https://127.0.0.1:3000

导航到 https://www.bungie.net/en/Application 并填写所需详细信息

  • 应用程序名称
  • 应用程序状态
  • 网站
  • OAuth 客户端类型
    • 机密
  • 重定向 URL
  • 范围
    • 访问 Bungie.net 通知、成员资格和最近的 Bungie.Net 论坛活动等项目。
  • 来源标头

以下指南可能会有所帮助

#@example 服务器

您需要编辑您的主机文件并将您的站点指向 127.0.0.1

如何编辑我的主机文件?

在 Windows 上(以管理员身份运行 PowerShell)

Add-Content -Path C:\Windows\System32\drivers\etc\hosts -Value "127.0.0.1`tdev.example.com" -Force
127.0.0.1 dev.example.com

创建证书

使用 openssl 为 localhost 创建证书很容易。只需将以下命令放入终端。输出将是两个文件:localhost.key 和 localhost.crt。

openssl req -x509 -out localhost.crt -keyout localhost.key \
  -newkey rsa:2048 -nodes -sha256 \
  -subj "/CN=localhost" -extensions EXT -config <( \
   printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")
💡

Windows

OpenSSL 可执行文件与 Git for Windows 一起分发。安装后,您将在 C:/Program Files/Git/mingw64/bin 中找到 openssl.exe 文件,如果您尚未完成,可以将其添加到系统 PATH 环境变量中。

添加环境变量 OPENSSL_CONF=C:/Program Files/Git/mingw64/ssl/openssl.cnf

 req -x509 -out localhost.crt -keyout localhost.key \
  -newkey rsa:2048 -nodes -sha256 \
  -subj "/CN=localhost"

创建目录 certificates 并放置 localhost.keylocalhost.crt

您可以在项目的根目录中创建一个 server.js,并使用 node server.js 运行它,以在本地测试使用 Bungie 集成的登录

const { createServer } = require("https")
const { parse } = require("url")
const next = require("next")
const fs = require("fs")
 
const dev = process.env.NODE_ENV !== "production"
const app = next({ dev })
const handle = app.getRequestHandler()
 
const httpsOptions = {
  key: fs.readFileSync("./certificates/localhost.key"),
  cert: fs.readFileSync("./certificates/localhost.crt"),
}
 
app.prepare().then(() => {
  createServer(httpsOptions, (req, res) => {
    const parsedUrl = parse(req.url, true)
    handle(req, res, parsedUrl)
  }).listen(3000, (err) => {
    if (err) throw err
    console.log("> Ready on https://127.0.0.1:3000")
  })
})

备注

默认情况下,Auth.js 假设 Bungie 提供商基于 OAuth 2 规范。

💡

Bungie 提供商附带 默认配置。要为您的用例覆盖默认值,请查看 自定义内置 OAuth 提供商

免责声明如果您认为您在默认配置中发现了一个错误,您可以 打开一个问题

Auth.js 严格遵守规范,它不应对提供商与规范的任何偏差负责。您可以打开一个问题,但如果问题是与规范不符,我们可能不会寻求解决方法。您可以在 讨论 中寻求更多帮助。

参数

参数类型
optionsOAuthUserConfig<Record<string, any>>

返回值

OAuthConfig<Record<string, any>>

Auth.js © Balázs Orbán 和团队 -2024