You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用LINE Login模块授权回调时出现Cannot GET错误的技术求助

解决LINE Login回调「Cannot GET views/pages/callbackurl.ejs」错误

嘿,我看你在集成LINE Login时碰到了回调报错的问题,这事儿我之前踩过坑,核心是回调URL和Express路由的配置逻辑搞错了,咱们一步步来修复:

问题根源分析

你现在的代码犯了两个关键错误:

  1. 回调URL指向了视图文件而非后端路由:LINE授权完成后,需要先把授权码发送到你的后端API路由,由后端处理token逻辑,而不是直接指向.ejs视图文件。
  2. Express路由使用了完整URL:app.use()的第一个参数必须是相对路径(比如/callback),Express不识别带域名的完整URL作为路由匹配规则。

修改后的正确代码

"use strict";
const app = require('express')();
const line_login = require("line-login");

// 修正回调URL为后端路由地址
const login = new line_login({
 channel_id: 15818,
 channel_secret: "6bfb55e907",
 callback_url: "http://localhost:5000/callback", // 重点:指向后端回调路由
 scope: "openid profile",
 prompt: "consent",
 bot_prompt: "normal"
});

// 配置EJS视图引擎(如果需要渲染页面的话)
app.set('view engine', 'ejs');
app.set('views', './views'); // 指定视图文件所在的根目录

app.listen(process.env.PORT || 5000, () => {
 console.log(`server is listening to ${process.env.PORT || 5000}...`);
});

// 授权发起路由(可以用更清晰的路径,比如/auth)
app.use("/auth", login.auth());

// 回调路由:使用相对路径匹配
app.use("/callback", login.callback(
  // 授权成功回调
  (req, res, next, token_response) => {
    // 这里可以选择返回JSON,或者渲染EJS页面
    // 示例:渲染callbackurl.ejs并传递token数据
    res.render('pages/callbackurl', { authInfo: token_response });
    // 如果你只是需要返回接口数据,就用:res.json(token_response);
  },
  // 授权失败回调
  (req, res, next, error) => {
    res.status(400).json(error);
  }
));

关键修改点说明

  • 调整callback_url:将其改为后端的回调路由http://localhost:5000/callback,这个地址要和你LINE开发者后台配置的回调URL完全一致(包括协议、端口)。
  • 修复路由路径:把app.use("http://localhost:5000/views/pages/callbackurl.ejs", ...)改成app.use("/callback", ...),符合Express的路由规则。
  • 配置视图引擎:如果需要渲染.ejs页面,必须先设置EJS为视图引擎,并指定视图文件夹路径,之后用res.render()来渲染页面,而不是让LINE直接访问视图文件。

额外注意事项

一定要确保LINE开发者控制台中「Login」模块下设置的回调URL和你代码里的callback_url完全相同,哪怕是一个字符的差异(比如少了斜杠、端口不对)都会导致回调失败。

内容的提问来源于stack exchange,提问作者John Wick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:26:27