auth-module: NuxtServerError with Laravel.passport callback

Version

v4.8.4

Reproduction link

https://codepen.io/pcasaspere/pen/mdymJxW

Steps to reproduce

Version

4.8.4

Steps to reproduce

  1. Config nuxt.config:
auth: {
  // localStorage: false,
  redirect: {
    login: '/login',
    logout: '/login',
    home: '/',
  },
  strategies: {
    'laravel.passport': {
      url: process.env.API_BASE_URL,
      client_id: process.env.API_OAUTH_CLIENT_ID,
      client_secret: process.env.API_OAUTH_CLIENT_SECRET,
    },
  }
},
  1. In view /login.vue add method login and call in mounted:
  methods: {
    login(){
      this.$auth.loginWith('laravel.passport');
   }
  1. this.$auth.loginWith(‘laravel.passport’); redirect to my Laravel Login form.
  2. Laravel authorize my user, and redirect to Nuxt callback route with correct code in url’s query.

image

  1. Nuxt call to internal http://127.0.0.1:3000/_auth/oauth/laravel.passport/authorize
  2. Nuxt response with error 500 with this data:
{
  "error": {
    "message": "Request failed with status code 401",
    "name": "NuxtServerError",
    "frames": [
      {
        "file": "node_modules/axios/lib/core/createError.js",
        "method": "createError",
        "line": 16,
        "column": 15,
        "context": {
          "start": 11,
          "pre": " * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {",
          "line": "  var error = new Error(message);",
          "post": "  return enhanceError(error, config, code, request, response);\n};\n"
        },
        "lang": "js",
        "open": "/__open-in-editor?file=/home/casas/dev/fitvium-app/app/node_modules/axios/lib/core/createError.js:16:15"
      },
      {
        "file": "node_modules/axios/lib/core/settle.js",
        "method": "settle",
        "line": 17,
        "column": 12,
        "context": {
          "start": 12,
          "pre": "module.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  if (!validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {",
          "line": "    reject(createError(",
          "post": "      'Request failed with status code ' + response.status,\n      response.config,\n      null,\n      response.request,\n      response"
        },
        "lang": "js",
        "open": "/__open-in-editor?file=/home/casas/dev/fitvium-app/app/node_modules/axios/lib/core/settle.js:17:12"
      },
      {
        "file": "node_modules/axios/lib/adapters/http.js",
        "method": "IncomingMessage.handleStreamEnd",
        "line": 237,
        "column": 11,
        "context": {
          "start": 232,
          "pre": "          if (config.responseType !== 'arraybuffer') {\n            responseData = responseData.toString(config.responseEncoding);\n          }\n\n          response.data = responseData;",
          "line": "          settle(resolve, reject, response);",
          "post": "        });\n      }\n    });\n\n    // Handle errors"
        },
        "lang": "js",
        "open": "/__open-in-editor?file=/home/casas/dev/fitvium-app/app/node_modules/axios/lib/adapters/http.js:237:11"
      },
      {
        "file": "events.js",
        "method": "IncomingMessage.emit",
        "line": 203,
        "column": 15,
        "context": {},
        "lang": "js"
      },
      {
        "file": "domain.js",
        "method": "IncomingMessage.EventEmitter.emit",
        "line": 448,
        "column": 20,
        "context": {},
        "lang": "js"
      },
      {
        "file": "_stream_readable.js",
        "method": "endReadableNT",
        "line": 1143,
        "column": 12,
        "context": {},
        "lang": "js"
      },
      {
        "file": "internal/process/next_tick.js",
        "method": "process._tickCallback",
        "line": 63,
        "column": 19,
        "context": {},
        "lang": "js"
      }
    ]
  },
  "hasInternal": true
}
<div align="right">This bug report is available on Nuxt community (#c462)</div>

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Reactions: 3
  • Comments: 18

Most upvoted comments

Hi @devondahon! If I’m not wrong, this error is because your callback route is not matching. I see that you set callback to http://localhost:3000/auth/callback. Then add:

auth: {
  redirect: {
    callback: '/auth/callback'
  }
}

I have the same problem, anyone has a solution to fix it ?

I’m using Laravel 7.3 with Passport and Nuxt in SPA mode.

{
  "error": {
    "message": "Request failed with status code 401",
    "name": "NuxtServerError",
    "frames": [
      {
        "file": "node_modules/axios/lib/core/createError.js",
        "method": "createError",
        "line": 16,
        "column": 15,
        "context": {
          "start": 11,
          "pre": " * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {",
          "line": "  var error = new Error(message);",
          "post": "  return enhanceError(error, config, code, request, response);\n};\n"
        },
        "lang": "js",
        "open": "/__open-in-editor?file=/Users/me/code/nuxt-spa/node_modules/axios/lib/core/createError.js:16:15"
      },
      {
        "file": "node_modules/axios/lib/core/settle.js",
        "method": "settle",
        "line": 17,
        "column": 12,
        "context": {
          "start": 12,
          "pre": "module.exports = function settle(resolve, reject, response) {\n  var validateStatus = response.config.validateStatus;\n  if (!validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {",
          "line": "    reject(createError(",
          "post": "      'Request failed with status code ' + response.status,\n      response.config,\n      null,\n      response.request,\n      response"
        },
        "lang": "js",
        "open": "/__open-in-editor?file=/Users/me/code/nuxt-spa/node_modules/axios/lib/core/settle.js:17:12"
      },
      {
        "file": "node_modules/axios/lib/adapters/http.js",
        "method": "IncomingMessage.handleStreamEnd",
        "line": 236,
        "column": 11,
        "context": {
          "start": 231,
          "pre": "          if (config.responseType !== 'arraybuffer') {\n            responseData = responseData.toString(config.responseEncoding);\n          }\n\n          response.data = responseData;",
          "line": "          settle(resolve, reject, response);",
          "post": "        });\n      }\n    });\n\n    // Handle errors"
        },
        "lang": "js",
        "open": "/__open-in-editor?file=/Users/me/code/nuxt-spa/node_modules/axios/lib/adapters/http.js:236:11"
      },
      {
        "file": "events.js",
        "method": "IncomingMessage.emit",
        "line": 215,
        "column": 7,
        "context": {},
        "lang": "js"
      },
      {
        "file": "domain.js",
        "method": "IncomingMessage.EventEmitter.emit",
        "line": 476,
        "column": 20,
        "context": {},
        "lang": "js"
      },
      {
        "file": "_stream_readable.js",
        "method": "endReadableNT",
        "line": 1183,
        "column": 12,
        "context": {},
        "lang": "js"
      },
      {
        "file": "internal/process/task_queues.js",
        "method": "processTicksAndRejections",
        "line": 80,
        "column": 21,
        "context": {},
        "lang": "js"
      }
    ]
  },
  "hasInternal": true
}

Great! Thank you very much!!

Thanks a lot ! It works 😄

Me too!! why post to : http://localhost:3000/_auth/oauth/laravel.passport/authorize

{
  "error": {
    "message": "unable to verify the first certificate",
    "name": "NuxtServerError",
    "frames": [
      {
        "file": "_tls_wrap.js",
        "method": "TLSSocket.onConnectSecure",
        "line": 1475,
        "column": 34,
        "context": {},
        "lang": "js"
      },
      {
        "file": "events.js",
        "method": "TLSSocket.emit",
        "line": 321,
        "column": 20,
        "context": {},
        "lang": "js"
      },
      {
        "file": "domain.js",
        "method": "TLSSocket.EventEmitter.emit",
        "line": 485,
        "column": 12,
        "context": {},
        "lang": "js"
      },
      {
        "file": "_tls_wrap.js",
        "method": "TLSSocket._finishInit",
        "line": 918,
        "column": 8,
        "context": {},
        "lang": "js"
      },
      {
        "file": "_tls_wrap.js",
        "method": "TLSWrap.ssl.onhandshakedone",
        "line": 688,
        "column": 12,
        "context": {},
        "lang": "js"
      }
    ]
  },
  "hasInternal": false
}