next-auth中如何正确传递redirect_uri解决Reddit OAuth参数报错
解决方法
你可以通过在Reddit OAuth provider的配置中显式指定callbackUrl参数,覆盖next-auth默认生成的回调地址:
- 修改你的next-auth配置代码,在Reddit provider的配置项中添加
callbackUrl字段,值设置为你需要的http://localhost:8080,修改后的完整代码如下:
import NextAuth from 'next-auth'; export default NextAuth({ providers: [ { id: 'reddit', name: 'Reddit', clientId: process.env.CLIENT_ID, clientSecret: process.env.CLIENT_SECRET, scope: 'read submit identity', type: 'oauth', version: '2.0', params: { grant_type: 'authorization_code' }, accessTokenUrl: ' https://www.reddit.com/api/v1/access_token', // 新增该行指定自定义回调地址 callbackUrl: 'http://localhost:8080', authorizationUrl: 'https://www.reddit.com/api/v1/authorize?response_type=code&duration=permanent', profileUrl: 'https://oauth.reddit.com/api/v1/me', profile: profile => { return { id: profile.id as string, name: profile.name, email: null, }; }, }, ], });
- 确认Reddit开发者后台的对应应用配置中,已经将
http://localhost:8080添加到了授权回调地址白名单中,必须保证传入的redirect_uri和后台配置完全一致,否则依旧会报参数无效错误。 - 重启项目后重新发起授权请求即可生效。
内容的提问来源于stack exchange,提问作者Андрей Кочанов
相关产品推荐
相关产品推荐

