更新记录

1.0.0(2026-03-30)

支持 授权登录功能


平台兼容性

uni-app(4.76)

Vue2 Vue2插件版本 Vue3 Vue3插件版本 Chrome Safari app-vue app-vue插件版本 app-nvue app-nvue插件版本 Android Android插件版本 iOS iOS插件版本 鸿蒙
1.0.0 1.0.0 × × 1.0.0 1.0.0 7.0 1.0.0 13 1.0.0 ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(4.76)

Chrome Safari Android Android插件版本 iOS iOS插件版本 鸿蒙 微信小程序
× × 7.0 1.0.0 13 1.0.0 × ×

tt-line-sdk

LINE 授权登录插件,为 uni-app x & uni-app 提供 LINE Login 集成方案,支持 iOS 和 Android 双平台

目录

SDK版本信息

平台 SDK 版本 支持状态
iOS LineSDKSwift 5.15.0 支持
Android LINE SDK 5.11.1 支持

推荐阅读: LINE Login 官方文档

重要提示

  • 必须使用自定义基座运行,否则无法找到插件方法
  • 测试前需确保已在 LINE Developers Console 创建 Channel 并获取 Channel ID
  • Android 自定义基座必须使用自签名,勿使用云端签名

环境配置

前置条件

  1. LINE Developers Console 创建一个 Provider 和 LINE Login Channel
  2. 获取 Channel ID
  3. 在 Channel 设置中配置应用的 Bundle ID(iOS)和 Package Name(Android)

iOS 平台配置

1. 配置 URL Scheme 和 Query Schemes

编辑插件内的 uni_modules/tt-line-sdk/utssdk/app-ios/Info.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>CFBundleURLTypes</key>
    <array>
      <dict>
        <key>CFBundleURLSchemes</key>
        <array>
          <string>line3rdp.$(PRODUCT_BUNDLE_IDENTIFIER)</string>
        </array>
      </dict>
    </array>
    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>lineauth2</string>
      <string>line</string>
    </array>
  </dict>
</plist>

2. 配置通用链接 (Universal Link)(可选)

如果需要使用 Universal Link 方式回调,请参考:

Android 平台配置

Android 平台会自动完成相关配置,确保在 LINE Developers Console 正确配置应用 Package Name 即可。

快速开始

1. 导入插件

uni-app x 版本

import { getTTLineSDK } from "@/uni_modules/tt-line-sdk";
import type { TTLineSDK, TTLineRegisterOptions, TTLineLoginOptions, TTLineLogoutOptions } from "@/uni_modules/tt-line-sdk";

const lineSDK = getTTLineSDK();

uni-app 版本

import { getTTLineSDK } from "@/uni_modules/tt-line-sdk";

const lineSDK = getTTLineSDK();

2. 初始化 SDK

在使用任何功能前,必须先调用 register 方法初始化 SDK。

uni-app x 版本

lineSDK.register({
    channelId: "您的 LINE Channel ID",     // 必填:LINE Developers Console 中获取
    universalLink: "您的通用链接",          // iOS 可选:Universal Link
    success: (res) => {
        console.log("LINE SDK 初始化成功");
    },
    fail: (err) => {
        console.error("LINE SDK 初始化失败:", err.errMsg);
    },
    complete: null
} as TTLineRegisterOptions);

uni-app 版本

lineSDK.register({
    channelId: "您的 LINE Channel ID",
    universalLink: null,
    success: (res) => {
        console.log("LINE SDK 初始化成功");
    },
    fail: (err) => {
        console.error("LINE SDK 初始化失败:", err.errMsg);
    },
    complete: null
});

功能介绍

LINE 授权登录

LINE 登录完成后会直接返回 Access Token 和用户信息,无需像微信一样再通过后端换取

参数说明

TTLineLoginOptions

参数 类型 必填 说明
permissions string[] 请求的权限列表,可选值见下表,默认 ["profile"]
success function 成功回调
fail function 失败回调
complete function 完成回调

权限列表 (permissions)

说明
"profile" 获取用户基本信息(默认)
"openid" 获取 ID Token(JWT),可用于服务端验证
"email" 获取用户邮箱(需在 LINE Console 开通 email 权限)

返回值 TTLineLoginSuccess

参数 类型 说明
accessToken string LINE Access Token,可用于调用 LINE API
idToken string | null ID Token(JWT),需请求 openid 权限
userID string | null 用户 ID
name string | null 用户名称
pictureURL string | null 用户头像 URL
email string | null 用户邮箱,需请求 email 权限
statusMessage string | null 用户状态消息

示例代码

uni-app x 版本

lineSDK.login({
    permissions: ["profile", "openid"],
    success: (res) => {
        console.log("LINE 登录成功");
        console.log("userID:", res.userID);
        console.log("name:", res.name);
        console.log("pictureURL:", res.pictureURL);
        console.log("accessToken:", res.accessToken);
        console.log("idToken:", res.idToken);

        // 将 accessToken 或 idToken 发送到后端服务器进行验证
        this.sendTokenToServer(res.accessToken, res.idToken);
    },
    fail: (err) => {
        console.error("LINE 登录失败:", err.errMsg);
        uni.showToast({
            title: '登录失败',
            icon: 'error'
        });
    },
    complete: null
} as TTLineLoginOptions);

uni-app 版本

lineSDK.login({
    permissions: ["profile", "openid"],
    success: (res) => {
        console.log("LINE 登录成功");
        console.log("userID:", res.userID);
        console.log("name:", res.name);
        console.log("accessToken:", res.accessToken);

        this.sendTokenToServer(res.accessToken, res.idToken);
    },
    fail: (err) => {
        console.error("LINE 登录失败:", err.errMsg);
        uni.showToast({
            title: '登录失败',
            icon: 'error'
        });
    },
    complete: null
});

后端验证

LINE 登录直接返回 Access Token,后端可使用该 Token 调用 LINE API 验证用户身份:

  1. 使用 Access Token 调用 GET https://api.line.me/v2/profile 获取用户信息
  2. 或使用 ID Token 在服务端进行 JWT 验证

详细流程请参考: LINE Login API 文档

退出登录

参数说明

TTLineLogoutOptions

参数 类型 必填 说明
success function 成功回调
fail function 失败回调
complete function 完成回调

示例代码

uni-app x 版本

lineSDK.logout({
    success: (res) => {
        console.log("退出登录成功");
        uni.showToast({ title: '已退出登录' });
    },
    fail: (err) => {
        console.error("退出登录失败:", err.errMsg);
    },
    complete: null
} as TTLineLogoutOptions);

uni-app 版本

lineSDK.logout({
    success: (res) => {
        console.log("退出登录成功");
        uni.showToast({ title: '已退出登录' });
    },
    fail: (err) => {
        console.error("退出登录失败:", err.errMsg);
    },
    complete: null
});

错误处理

错误码说明

错误码 错误信息 适用场景 解决方案
101 系统环境错误,请检查应用状态 所有功能 Android: 检查 Activity 状态; iOS: 检查视图控制器
102 LINE 应用未安装或不可用 所有功能 提示用户安装 LINE 客户端
103 SDK 未初始化,请先调用 register 登录/退出 确保先调用 register 方法
106 用户取消登录 登录 用户主动取消,可忽略或提示
108 登录结果为空 登录 重试登录操作
202 用户未登录 退出登录 用户尚未登录,无需退出
999 其他未知错误 所有功能 查看原始错误信息排查

常见问题

1. 找不到插件方法?

解决方案: 确保使用自定义基座运行,标准基座不包含原生插件。

2. iOS 平台登录无响应?

解决方案:

  • 检查 uni_modules/tt-line-sdk/utssdk/app-ios/Info.plist 中的 URL Scheme 和 LSApplicationQueriesSchemes 配置
  • 确认 LINE Developers Console 中已正确配置 iOS Bundle ID
  • 如使用 Universal Link,确认配置正确

3. Android 平台登录失败?

解决方案:

  • 确认 LINE Developers Console 中已正确配置 Android Package Name
  • 确保应用签名正确
  • 检查设备上是否已安装 LINE 客户端

4. 登录返回用户取消(错误码 106)?

解决方案:

  • 这是用户主动取消登录操作的正常行为
  • 根据业务需求忽略或提示用户重试

5. 获取不到邮箱?

解决方案:

  • 确保 permissions 中包含 "email""openid"
  • 在 LINE Developers Console 的 Channel 设置中开通 email 权限
  • 用户的 LINE 账号需要已绑定邮箱

6. ID Token 为空?

解决方案:

  • 确保 permissions 中包含 "openid"
  • ID Token 以 JWT 格式返回,可在后端解析验证

完整示例

import { getTTLineSDK } from "@/uni_modules/tt-line-sdk";

const lineSDK = getTTLineSDK();

// 1. 初始化
lineSDK.register({
    channelId: "YOUR_CHANNEL_ID",
    universalLink: null,
    success: (res) => {
        console.log("初始化成功");
    },
    fail: (err) => {
        console.error("初始化失败:", err.errMsg);
    },
    complete: null
});

// 2. 登录
lineSDK.login({
    permissions: ["profile", "openid"],
    success: (res) => {
        console.log("登录成功");
        console.log("userID:", res.userID);
        console.log("name:", res.name);
        console.log("accessToken:", res.accessToken);
    },
    fail: (err) => {
        console.error("登录失败:", err.errMsg);
    },
    complete: null
});

// 3. 退出登录
lineSDK.logout({
    success: (res) => {
        console.log("退出成功");
    },
    fail: (err) => {
        console.error("退出失败:", err.errMsg);
    },
    complete: null
});

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率: