当前位置: 首页 > 知识库问答 >
问题:

努克斯

王修为
2023-03-14

我正在用Strapi CMS后端和使用composition API的NuxtJS前端建立一个社区网站。

除了正常的注册和使用电子邮件和用户名登录(有效!),我希望用户能够使用GitHub登录。

我正在使用@nuxtjs/auth模块进行授权。

我已经使用ngrok“部署”了我的Strapi后端。这显然是使OAuth工作所必需的。

我已经设置了我的GitHub应用程序,使用

我已经在我的.env文件中设置了GitHub客户端的id和secret。

在我nuxt.config.js文件中的策略中,我有以下内容:

github: {
  clientId: process.env.GITHUB_CLIENT_ID,
  clientSecret: process.env.GITHUB_CLIENT_SECRET,
},

我在Strapi后端的config/server.js中添加了一行:

url: '<ngrok url>'

所以后端在那个位置启动。

在我的Strapi配置中,我启用了GitHub提供程序,我需要一个重定向url到我的前端。我不知道该在这里放什么。

我试过:http://localhost:3000 (我的Nuxt应用程序端口),但当我尝试从前端(使用Nuxt auth的loginWith('github')访问它时,会出现重定向uri不匹配错误(“重定向uri必须与注册的回调匹配”)。

这里有更多的信息,但我不明白他们在说什么。

  • 提供一个重定向uriwhere?

nuxt auth文档并没有那么复杂,比如说使用$auth.loginWith('github'),就是这样。我在前端做这件事,但我不确定这是否是我应该做的全部。

我可以手动转到“

我的主要两个问题是:

  • 如何从前端向正确的endpoint进行正确呼叫,以通过GitHub登录?

任何帮助都非常感谢!

更新#1

我在github策略上添加了一个属性reDirectUrl,nuxt.config.js

我还在Strapi中添加了一个重定向到localhost:3000/connect/github,并在nuxt中添加了一个页面。

现在,我从Strapi获得了一个jwt令牌和一个用户,但是$auth.loggedIn在我的前端仍然是false。我将尝试通过编写自己的中间件来解决这个问题。我认为这是必要的,因为应用程序是服务器端渲染的。


共有1个答案

慕金林
2023-03-14

问题是,loginWith('github')将nuxt直接连接到github。但我们想先去斯特拉皮。因此,最后,我删除了前端中所有与github相关的信息,并制作了一个常规的

data() {
    return {
      provider: this.$route.params.provider,
      access_token: this.$route.query.access_token,
    }
  },
  async mounted() {
    const res = await this.$axios.$get(
      `/auth/github/callback?access_token=${this.access_token}`,
    )
    const { jwt, user } = res
    await this.$auth.setUserToken(jwt)
    this.$auth.setUser(user)
    this.$router.push(`/`)
  },

为了在本地测试它,我使用ngrok在隧道中启动后端,而不是localhost。

如果你想看更多的代码,请在这里查看我的PR

 类似资料:
  • 我正在使用cmake Gui构建开罗。当我点击“配置”时,Cmake显示以下错误: 找不到PIXMAN,尝试在系统变量PIXMAN中设置PIXMAN根文件夹的路径(缺少:PIXMAN_LIBRARIESPIXMAN_INCLUDE_DIRS) 找不到ZLIB(缺少:ZLIB_LIBRARYZLIB_INCLUDE_DIR) C:/cmake-3.7.0-rc1-win32-x86/share/cm

  • 问题内容: 我在htmlunit中单击链接时遇到问题。我浏览了网站上的api(对此我不太了解),并查看了所有可以找到的示例代码,但是单击链接仍然有问题。 这是错误消息的顶部(它相当大,如果您希望我可以全部提交) 第一页加载正常,但是当我单击第二个链接时,出现此错误(链接为javascript)。这是我的代码的一部分 如果我执行打印链接2,则会得到: 起初我以为HtmlAnchor可能是个问题,所以

  • 问题内容: 我有一个非常基本的问题。 以下代码无法编译(假设Apple扩展了Fruit): 在阅读有关为什么不阅读的内容时,我理解的是单词,但不理解概念:)。 假设第一个Fruit不是抽象类。我知道,由于我们正在处理多个子类型,所有这些子类型都扩展了Fruit。据推测,由于我们无法分辨出确切的水果类型,因此我们无法在集合中放入任何东西。有几件事我不明白: 1)显然我们不知道是哪个水果让我感到困惑。

  • 问题内容: 假设您不希望其他网站将您的网站“框”为: 因此,您可以在所有页面中插入反框架,框架破坏JavaScript: 优秀的!现在,您可以自动“破坏”或突破包含iframe的任何内容。除了一个小问题。 事实证明, 您的框架破坏代码可以被破坏, 此代码执行以下操作: 每当浏览器尝试通过事件处理程序导航到当前页面之外时,都会增加一个计数器 设置一个计时器,通过触发每毫秒触发一次的计时器,如果看到计

  • 问题内容: 我最近喜欢Go编程语言,到目前为止,我发现它很棒,但实际上很难理解接口。我已经阅读了很多有关它们的内容,但对我来说它们仍然很抽象。 我使用下面的接口编写了一些快速的代码: 我真的看不到Circer界面的用途。这些方法已经编写好了,我可以通过直接在结构上直接调用它们而不是使用Circer作为包装器来保存两行代码。 有什么我想念的吗?我使用接口不正确吗?任何帮助或示例,不胜感激。 问题答案

  • 我以前也这样做过,但由于某种原因,我在创建这个连接池时确实遇到了一些困难。在创建连接池后ping连接池时,我收到以下错误: 我在创建池时提供的信息如下: : 3306; : bondsaverdb; :localhost; : root; :我的密码; 有什么我遗漏的吗?我有拼写错误或输入错误的地方吗? 先谢谢!