带有NextAuth的Spotify不会返回个人资料图片



我使用的是NextAuth v4,在通过Spotify验证后,我无法访问用户的个人资料图片。以下是我从Spotify获得的信息:

{
name: '***',
email: '***',
sub: '***',
accessToken: '***',
refreshToken: '***',
username: '***',
accessTokenExpires: ***,
iat: ***,
exp: ***,
jti: '***'
}

这是我在/pages/api/auth/[...nextauth].js:中的代码

import NextAuth from 'next-auth/next'
import SpotifyProvider from 'next-auth/providers/spotify'
import spotifyApi, { LOGIN_URL } from '../../../lib/spotify'
async function refreshAccessToken(token) {
try {
spotifyApi.setAccessToken(token.accessToken)
spotifyApi.setRefreshToken(token.refreshToken)
const { body: refreshedToken } = await spotifyApi.refreshAccessToken()
console.log(`REFRESH TOKEN IS: ${refreshedToken}...`)
return {
...token,
accessToken: refreshedToken.access_token,
accessTokenExpires: Date.now + refreshedToken.expires_in + 1000, // = 1 hour as 3600 returns from spotify API
refreshToken: refreshedToken.refresh_token ?? token.refreshToken, // = the refresh token it never ends whether the company doesn't modify it or stop it=
}
} catch (error) {
console.log(error)
return {
...token,
error: 'RefreshAccessTokenError',
}
}
}
export default NextAuth({
// Configure one or more authentication providers (step 1)
providers: [
SpotifyProvider({
clientId: process.env.NEXT_PUBLIC_CLIENT_ID,
clientSecret: process.env.NEXT_PUBLIC_CLIENT_SECRET,
authorization: LOGIN_URL,
}),
],
secret: process.env.JWT_SECRET,
pages: {
signIn: '/login',
},
callbacks: {
async jwt({ token, account, user }) {
// initial sign in
if (account && user) {
return {
...token,
accessToken: account.access_token,
refreshToken: account.refresh_token,
username: account.providerAccountId,
// we are handling expiry times in Miliseconds hence * 1000
accessTokenExpires: account.expires_at * 1000,
}
}
// refresh token
// Return previous token if the access has not expired yet
if (Date.now() < token.accessTokenExpires) {
console.log('EXISTING ACCESS TOKEN IS VALID')
return token
}
// Access token has expired, so we have to refresh it...
console.log('ACCESS TOKEN HAS EXPIRED, REFRESHING...')
return await refreshAccessToken(token)
},
async session({ session, token }) {
session.user.accessToken = token.accessToken
session.user.refreshToken = token.refreshToken
session.user.username = token.username
console.log('Async session callback', token)
return session
},
},
})

我需要做什么来获取用户的个人资料图片吗?还是Spotify不归还?我做了一些研究,但在任何地方都找不到这个问题。

谢谢,DillonB07

显然,您需要一张个人资料图片才能获得图像!

如果你没有个人资料图片,Spotify只会返回null

最新更新