首页 > 解决方案 > 此消息类型不允许使用参数:code_challenge_method,如何在 nuxt 中修复它?

问题描述

在 Nuxt 中,使用 auth v5 时出现标题错误。这是我目前的策略:

在此处输入图像描述

文档(https://dev.auth.nuxtjs.org/schemes/oauth2#codechallengemethod)说您可以使用“plain”或“S256”作为选项,我都尝试了,但错误仍然存​​在。

我唯一不能手动让它工作的方法是在 url 中复制粘贴 oAuth:

https://accounts.google.com/o/oauth2/auth/identifier?protocol=oauth2&response_type=token&client_id=MYCLIENTID&redirect_uri=https%3A%2F%2Flocalhost%3A3005%2Flogin&scope=profile%20email&state=sIpW-W_6h_QwUs0gCDV_o&flowName=GeneralOAuthFlow

将该链接与以下链接进行比较:

https://accounts.google.com/o/oauth2/auth/identifier?protocol=oauth2&response_type=token&client_id=MYCLIENTID&redirect_uri=https%3A%2F%2Flocalhost%3A3005%2Flogin&scope=profile%20email&state=sIpW-W_6h_QwUs0gCDV_o&code_challenge_method=S256&code_challenge=fnyp2Ray850HEmHEwmoyQtIrPFPpHWBt4nVAz9p5Vxs&flowName=一般OAuthFlow

第一个链接和第二个链接之间的唯一区别是第一个链接确实有效(我可以登录)并且它没有挑战方法。

第二个链接不起作用(它显示上面的谷歌图片)但如果您阅读链接的末尾,它同时具有 code_challenge_method 和 code_challenge

标签: vue.jsoauth-2.0google-oauthnuxt.js

解决方案


经过数小时的反复试验,使其工作的唯一方法是将 code_challenge_method 设置为空字符串,如下所示:

在此处输入图像描述

nuxt auth 模块中使用的演示,做同样的事情,他们不使用任何 code_challenge_method 与谷歌策略

编辑 2021 年 10 月 6 日

经过进一步调查,似乎如果我只使用一个空的 code_challenge_method(就像上图一样),google auth 似乎不再起作用了,我敢打赌这里合并了一个损坏的提交,所以为了修复我在我的谷歌策略中添加了一个新属性:

responseType: 'token id_token'

我还在这里为该错误创建了一个报告


推荐阅读