SuperAPI AI 工具集

line-login

安全与审计

查看项目

更新于 10-15 10:47

技能介绍

用途

LINE Login 是 LINE 提供的用户认证与授权方案,基于 OAuth 2.0 与 OpenID Connect 构建(v2.1),用于为 Web 应用、原生应用(iOS/Android)、Unity 和 Flutter 提供用户认证、资料访问和机器人(Bot)关联能力。本技能是一份综合参考文档,用于在构建或审查 LINE Login 相关代码时查阅规范与约束。

文档明确提示:不要凭记忆回答 LINE Login 问题,因为 LINE 会频繁更新 API,训练数据不可靠,应始终查阅随附的参考文件。

主要能力

  • OAuth 2.1 授权码流程:用户跳转授权端点,经 LINE 登录界面后回调携带 code,再交换令牌。
  • PKCE 支持:推荐用于公共客户端(SPA/移动端),仅支持 S256。
  • 令牌管理:验证访问令牌、刷新令牌、撤销令牌、验证 ID Token。
  • ID Token JWT 验证:签名算法为 HS256(Web 登录)或 ES256(原生应用、SDK、LIFF)。
  • 用户资料与 Bot 关联:获取用户资料、检查好友状态、解除授权;bot_prompt 参数支持 normal 与 aggressive 两种模式。
  • 安全规范:state 必须加密随机并在回调时校验、Channel Secret 仅限服务端、redirect_uri 必须为 HTTPS、ID Token 必须先验证签名。

使用方式

环境变量:

LINE_LOGIN_CHANNEL_ID=LINE Login Channel ID
LINE_LOGIN_CHANNEL_SECRET=Channel secret (ID token verification, token exchange)
LINE_LOGIN_REDIRECT_URI=Registered callback URL

最小授权码流程(伪代码):

# 1. Redirect user to authorize
state = random_token()
session.save(state)
redirect to:
  https://access.line.me/oauth2/v2.1/authorize?
    response_type=code
    &client_id={channel_id}
    &redirect_uri={callback_url}
    &state={state}
    &scope=profile%20openid%20email

# 2. Callback — exchange code for token
if params.state != session.state:
    return 403  # CSRF check failed

POST https://api.line.me/oauth2/v2.1/token
  grant_type=authorization_code
  &code={params.code}
  &redirect_uri={callback_url}
  &client_id={channel_id}
  &client_secret={channel_secret}

# 3. Response
{ access_token, token_type, refresh_token, expires_in, id_token, scope }

关键端点:

步骤 端点
授权 GET https://access.line.me/oauth2/v2.1/authorize
令牌交换 POST https://api.line.me/oauth2/v2.1/token
验证访问令牌 GET https://api.line.me/oauth2/v2.1/verify?access_token={token}
刷新令牌 POST https://api.line.me/oauth2/v2.1/token (grant_type=refresh_token)
撤销令牌 POST https://api.line.me/oauth2/v2.1/revoke
验证 ID Token POST https://api.line.me/oauth2/v2.1/verify (id_token + client_id)
获取用户资料 GET https://api.line.me/v2/profile
检查好友状态 GET https://api.line.me/friendship/v1/status
解除授权 POST https://api.line.me/user/v1/deauthorize

作用域:profile、openid、email(空格分隔)。授权码有效期 10 分钟,一次性使用。访问令牌有效期 30 天,刷新令牌有效期 90 天。

SDK:原生 SDK 支持 iOS (Swift)、Android、Unity、Flutter;Web 应用直接使用 OAuth 2.1 流程,无需 SDK。

适用场景

  • 为 Web、原生、Unity、Flutter 应用接入 LINE 登录。
  • 需要获取 LINE 用户资料或检查好友关系。
  • 需要将用户与 LINE 官方账号(Bot)关联。
  • 构建或审查 LINE Login 代码时对照规范与安全约束。

限制

  • 文档强调不要凭记忆回答,须查阅参考文件。
  • PKCE 仅支持 S256。
  • redirect_uri 必须为 HTTPS。
  • Channel Secret 仅限服务端使用,不得暴露给客户端。
  • 授权码 10 分钟有效且一次性使用。
  • 关于收费、价格、平台支持范围等具体信息,资料中暂未提供。

参考文件索引

文件 主题
references/api-common.md 优先阅读。速率限制、状态码、前向兼容、client_secret 规则、日志
references/oauth-flow.md 授权流程、PKCE、作用域、认证方式、错误码
references/token-management.md 令牌交换/刷新/撤销/验证、ID Token 声明与签名
references/security.md 安全清单、开发指南、自动登录失败、登录按钮设计
references/user-profile.md 用户资料 API、关联 Bot、好友状态
references/experts.md LINE Login 领域专家,用于架构指导