#13257·next-auth

[错误]V5 OAuth 提供者 token.request 配置无法正常工作,默认为 token.url 直接请求

作者: leonwangcn创建于 2025年9月28日更新于 2026年6月19日
标签bugproviderstriage

提供方类型

自定义提供者

环境


系统 :
操作系统: macOS 26.0
CPU: (10) arm64 苹果M4
内存: 85.95 MB / 16.00 GB
壳体: 5.9 - /bin/zsh
二进制 :
节点:20.19.0 - ~/.nvm/版本/节点/v20.19.0/bin/节点
npm:10.8.2 - ~/.nvm/版本/node/v20.19.0/bin/npm
浏览器 :
萨法里: 26.0
npm 软件包 :
@auth/Prisma-适应器:^2.7.2 → 2.1.0
第15.2.3段,第15.5.4段。
下届: 5.0.0-β.29 QQ 5.0.0-β.29 (中文(简体) ).
反应:

复制 URL

https://GitHub.com/leonwangcn/t3-app. 请检查date=中的日期值 (帮助)

· 说明问题

当自定义一个 OAuth 提供者时 。 请求函数处理特殊符号交换逻辑,该函数从未调用。 Auth.js默认使用sord.url直接请求,导致第三方OAuth服务返回出错.

如何繁殖

  1. 创建自定义 OAuth 提供者,其功能配置为 " token.request "
  2. 执行 OAuth 登录流程
  3. 观测日志 -- -- 通知日志来自 " token. request " 功能从未出现
  4. 接收错误:`操作程序错误:“响应”不是符合的Token Endpoint响应'
zz
导出默认函数 Dingtalk Provider( 选项: OAuthUser Config < DingtalkProfile > ): OAuthConfig < DingtalkProfile > {
返回{
id:"叮当",
名称:"叮当",
类型: "oauth",
授权 :{
url:"https://login.dingtalk.com/oauth2/auth","互联网档案馆的存檔,存档日期2014-12-02.","互联网档案馆的存檔,存档日期2011-12-22.",.
参数 :{
范围:"开口皮",
响应 类型:“代码”,
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
{\fn华文楷体\fs16\1cHE0E0E0}
符号 : {
URL:"https://api.dingtalk.com/v1.0/oauth2/user AccessToken","互联网档案馆的存檔,存档日期2011-12-2.
async 请求( 文本) {
contail.log ("自定义托肯请求已启动"; // 此日志从未出现

// DingTalk API 需要特殊的 JSON 格式参数
Const 回复 = 等待获取('https://api.dingtalk.com/v1.0/oauth2/user AccessToken',{
方法 : “ POST ” ,
标题 : {'Content-Type':'application/json'},
机构: JSON.stringify({
客户端ID: 选项. 客户端 爱德,
客户端Secret: options.clientSecret,
代码:上下文.params.code,
grantType:"授权 代码"
~ , , ( ) ,
* ;

const数据=等待回复.json();
返回{
符号 :{
access token:数据. accessToken,
过期  in: data. expireIn ? 7200, (中文).
刷新( token: data. rerefreshToken??","",
符号 类型:"Bearer",
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
* ;
{\fn华文楷体\fs16\1cHE0E0E0}
{\fn华文楷体\fs16\1cHE0E0E0}
//... 其他配置
* ;
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

预期行为

□ 实际行为

  • `token.request ' 功能从未被称作
  • Auth.js直接使用默认 OAuth2 流量请求 “ token.url”
  • 由于 DingTalk API 需要特殊的 JSON 格式参数( mamlCase),默认请求失败
  • 返回错误:`操作程序错误:“响应”不是一个符合的Token Endpoint响应'

□ 预期行为

  • 当“ token. request” 函数配置时,应当使用“taken.request”函数,而不是“taken.request”函数。 . . . . . . .

内容来源: nextauthjs/next-auth