API 的 Auth0 访问令牌在邮递员中有效,但在从 Vue 调用时无效

Posted

技术标签:

【中文标题】API 的 Auth0 访问令牌在邮递员中有效,但在从 Vue 调用时无效【英文标题】:Auth0 access token to API works in postman but not when calling from Vue 【发布时间】:2020-02-01 09:48:03 【问题描述】:

我在 Auth0 中设置了 2 个项目:

    应用程序 - 单页应用程序 API - 自定义 API,机器对机器

我已按照以下链接中的说明调用自定义 API:

https://auth0.com/docs/quickstart/spa/vuejs/02-calling-an-api

我已经下载了为上述两个项目配置设置的示例。 Vue 应用程序能够正确登录,并且能够使用下载的示例代码调用外部 API(外部 API,“后端”,示例代码中是用 Node JS 编写的) .

但是,当我将后端更改为已为第 2 项(自定义 API)设置的 Laravel/Lumen 应用程序时,Vue 应用程序收到 401 未经授权的错误。所以,我复制了通过 Vue 检索到的访问令牌:

const accessToken = await this.$auth.getTokenSilently();

console.log(accessToken);

并尝试使用此访问令牌调用 Lumen 后端 - 它工作得非常好! 是否有我可能遗漏的设置使 Vue 和 Lumen 能够与 Auth0 一起使用?

p/s:自定义 Lumen API 是按照以下说明制作的:

https://auth0.com/blog/developing-restful-apis-with-lumen/

【问题讨论】:

laravel 应用是否已注册并允许访问 auth0 仪表板中的 API?如果您转到破折号中的 api 并查看 M2M 连接,您应该能够切换应用程序。 我已经将流明应用程序设置为在 Auth0 中注册的 API。但是,经过进一步调查,我发现 Vue 应用程序没有将 Authorization 标头发送到 lumen 应用程序。这很奇怪,因为相同的 Vue 代码在 express js 后端上运行良好。所以我想这不是Auth0的问题。谢谢 【参考方案1】:

好吧,原来我在示例代码的 axios 部分犯了一个错误。示例使用 get,而我的 API 使用 post。所以我最终在错误的 axios 参数中发送了标头。希望这对遇到同样问题的人有所帮助。

【讨论】:

以上是关于API 的 Auth0 访问令牌在邮递员中有效,但在从 Vue 调用时无效的主要内容,如果未能解决你的问题,请参考以下文章

允许使用 Auth0 保护的 API 的开发人员访问令牌

如何让我的 Auth0 权限进入 AWS HTTP API Jwt 授权方的访问令牌的范围声明?

Auth0 与 ReactJS 和 Lumen - 受众看起来像一个随机字符串

登录 Auth0 后找不到如何获取访问令牌

是否可以以某种方式使用recaptcha和auth0来避免让用户登录但仍然有令牌?

从 reddit api 获取 api oauth 访问令牌