0

我使用 NextAuth 进行身份验证和 URQL 的 authExchange。这个想法是在Authorization标题中附加一个 accessToken 。

// ...
import { authExchange } from '@urql/exchange-auth'
import { getSession } from 'next-auth/react'

getAuth: async ({ authState }) => {
  // for initial launch, fetch the auth state from storage (local storage, async storage etc)
  if (!authState) {
    const session = await getSession()
    if (session && session.user.accessToken) {
      return { token: session.user.accessToken }
    }
    return null
  }
  return null
},

当我启动服务器时,它会打印[next-auth][error][CLIENT_FETCH_ERROR] https://next-auth.js.org/errors#client_fetch_error request to http://localhost:4200/api/auth/session failed, reason: connect ECONNREFUSED 127.0.0.1:4200

该错误是由 引起的getSession(),但为什么会发生这种情况,是否有任何潜在的解决方法?

4

1 回答 1

0

听起来NEXTAUTH_URLenv 变量要么未设置,要么设置为不正确的 url。你的本地开发服务器在运行localhost:4200吗?

如果没有,您必须更新您的NEXTAUTH_URL环境变量。

另请参阅https://next-auth.js.org/getting-started/example#extensibility以了解如何accessToken在会话状态下使用。您必须在回调中做更多的工作才能pages/api/auth/[...nextauth].jsaccessToken您期望的地方提供您的服务。

于 2022-02-27T00:52:29.920 回答