Flutter TikTok API集成插件tiktok_api的使用
Flutter TikTok API集成插件tiktok_api的使用
<code>tiktok_api</code>
项目开发了一个开源的Flutter插件库,用于与TikTok的API进行集成。该项目提供了更简单的方式来集成TikTok,因为根据TikTok的文档和支持,直接集成可能不会成功。
特性
- (WIP) 集成Android
- (alpha) 集成iOS
- (计划中) 集成Web
要求
- Flutter版本 3.x.x
- Dart版本 3.x.x
- 一个网络服务器来存储App Link(Android)配置文件
- 一个网络服务器来存储Universal Link(iOS)配置文件
- 一个后端服务器来交换TikTok的授权码(登录成功后)与TikTok的访问令牌
开发状态
此项目仍在开发中。
Demo
入门指南
- 在TikTok开发者网站上创建一个应用。
- 添加
Login Kit
产品并为Android配置Login Kit
。同时为iOS配置Login Kit
。如果遇到重定向URI错误,可以在Login Kit
的重定向URI末尾添加斜杠,例如:https://www.abc.com/login-callback/
。 - 为Android配置App Link(可以使用Uni Links包)并测试App Link是否正常工作。
- 为iOS配置Universal Link(可以使用Uni Links包)并测试Universal Link是否正常工作。
- 配置您的TikTok应用的范围。可以从
user.info.basic
开始。 - 提交您的应用,并确保状态为
Live in Production
。 - 安装此插件包
flutter pub add tiktok_api
- 调用
setup()
方法并传递您的TikTok应用客户端密钥:_tiktokSDKApi.setup('<API_KEY>')
- 调用
login()
方法并传递范围:_tiktokSDKApi.login(['user.info.basi'], 'https://www.abc.com/login-callback/', browserAuthEnabled)
- 一旦用户授权了您的TikTok应用,那么TikTok登录工具包将通过App Link(Android)或Universal Link(iOS)重定向回您的应用。您的任务是处理App Link或Universal Link的重定向(上述步骤3),并检索授权码。您必须使用此授权码与访问令牌进行交换。一旦获取到访问令牌,就可以使用它调用所有TikTok的API。此交换过程必须在后端进行。您可以参考TikTok的文档来获取访问令牌在这里。
您可以在example
文件夹中查看如何使用此插件库的示例代码。
行为准则
请参阅我们的行为准则文档以了解社区指南。
开发者指南
顺序图
有两个阶段。首先,我们必须做一些设置以便能够与原生侧通信。然后我们继续登录TikTok并向用户请求授权信息范围。一旦用户授权,我们就必须使用授权码换取访问令牌。访问令牌将包含模仿凭据和范围。一旦我们获得访问令牌,就可以使用它调用所有TikTok API。
设置阶段
sequenceDiagram
Flutter App ->> Pigeon Host on Dart's side: setup()
Pigeon Host on Dart's side ->> Pigeon Host on iOS/Android side: setup()
Pigeon Host on iOS/Android side ->> Tiktok SDK: setup()
获取访问令牌
sequenceDiagram
Flutter App ->> uni_link: setup App Link/Universal Link()
Flutter App ->> Pigeon Host on Dart's side: login()
Pigeon Host on Dart's side ->> Pigeon Host on iOS/Android side: login()
Pigeon Host on iOS/Android side ->> Tiktok SDK: login()
par Login Response and Web Browser running in parallel
Tiktok SDK --> Pigeon Host on iOS/Android side: response{verifier, etc}
Pigeon Host on iOS/Android side --> Pigeon Host on Dart's side: response{verifier, etc}
Pigeon Host on Dart's side --> Flutter App: response{verifier, etc}
Flutter App ->> Flutter App: save response{verifier, etc} and wait for uni_link callback
and
par Web Browser Opening and the app put to background in parallel
Native OS ->> Flutter App: put on background
and
Tiktok SDK ->> Web Browser: open Tiktok's Login site
Web Browser ->> Web Browser: succesful login
Web Browser --> Native OS: App Link or Universal Link callback {Authorization Code}
Native OS ->> Flutter App: put on foreground
Flutter App --> Native OS: foreground success
Native OS --> uni_link: App Link or Universal Link callback {Authorization Code}
uni_link --> Flutter App: Retrieve Authorization Code from App Link/Universal Link
Flutter App ->> Backend Server: exchange token {verifier, Authorization Code}
Backend Server ->> Tiktok API: exchange token {verifier, Authorization Code}
Tiktok API --> Backend Server: access token
Backend Server --> Flutter App: access token
end
end
开发
我们使用Flutter的<a href="https://pub.dev/packages/pigeon">pigeon</a>
包为我们提供双向通信所需的基础架构。
- 我们定义了我们的
pigeon.dart
文件。包含代码生成器的配置、消息数据结构和主机接口。 - 运行
dart run pigeon --input pigeon.dart
,pigeon将生成所有所需的通信基础架构以及主机接口的实现。 - 设置原生侧主机实现。
- 在Dart的一侧实例化主机接口实现,并对原生一侧进行远程调用。
示例代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:tiktok_api/tiktok_api.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _tiktokApiPlugin = TiktokApi();
[@override](/user/override)
void initState() {
super.initState();
/// Step 1. Call the setup and passed the client key (this is applies to Android only)
_tiktokApiPlugin.setup('<YOUR_TIKTOK_APP_CLIENT_KEY>');
}
// Platform messages are asynchronous, so we initialize in an async method.
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: TextButton(
child: const Text('Login to Tikok'),
onPressed: () async {
/// Step 2. Call login and passed the scopes and redirect uri
final result = await _tiktokApiPlugin.login(['user.info.basic'], '<YOUR_TIKTOK_APP_REDIRECT_URI>', true);
/// Step 3. Store the code verifier, we will need this later on for getting the access token
final codeVerifier = result.codeVerifier!;
/// Step 4. Tiktok will redirect to your app redirect_uri and you can retrieve the code from the query string.
/// You have to use App Link or Universal Link to make sure the OS can redirect to your app.
/// Below is an example using uni_link package
/*
if(link.startsWith('<REDIRECT_URI>')){
final authCode = link.replaceAll("<REDIRECT_URI>?code=", "");
/// Once we got the authCode we can exchange it with the access token
/// Read more here: https://developers.tiktok.com/doc/oauth-user-access-token-management
}
*/
},
),
),
),
);
}
}
更多关于Flutter TikTok API集成插件tiktok_api的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter TikTok API集成插件tiktok_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
要在Flutter应用中集成TikTok API,你可以使用 tiktok_api
插件。这个插件提供了与TikTok API的交互功能,允许你获取用户信息、视频数据等。
以下是如何在Flutter项目中使用 tiktok_api
插件的步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 tiktok_api
插件的依赖。
dependencies:
flutter:
sdk: flutter
tiktok_api: ^版本号
请将 ^版本号
替换为最新的 tiktok_api
插件版本号。
2. 导入插件
在需要使用TikTok API的Dart文件中导入 tiktok_api
插件。
import 'package:tiktok_api/tiktok_api.dart';
3. 初始化 TikTok API
在使用 API 之前,你需要初始化 TikTokApi
实例。通常需要提供 TikTok 的 API Key 或者其他认证信息。
final tiktokApi = TikTokApi(apiKey: 'YOUR_TIKTOK_API_KEY');
4. 调用 API 方法
tiktok_api
插件提供了多种方法来与 TikTok API 进行交互。以下是一些常见的用法示例:
获取用户信息
final userInfo = await tiktokApi.getUserInfo('USER_ID');
print(userInfo);
获取用户视频列表
final userVideos = await tiktokApi.getUserVideos('USER_ID');
print(userVideos);
获取视频信息
final videoInfo = await tiktokApi.getVideoInfo('VIDEO_ID');
print(videoInfo);
获取热门视频
final trendingVideos = await tiktokApi.getTrendingVideos();
print(trendingVideos);
5. 处理响应
TikTok API 的响应通常是一个 JSON 对象,你可以根据需要解析这些数据。
final userInfo = await tiktokApi.getUserInfo('USER_ID');
if (userInfo != null) {
print('Username: ${userInfo['username']}');
print('Followers: ${userInfo['followers']}');
} else {
print('Failed to fetch user info');
}
6. 错误处理
在使用 API 时,可能会遇到各种错误,例如网络错误、API 限制等。建议在使用 try-catch
块来捕获并处理这些错误。
try {
final userInfo = await tiktokApi.getUserInfo('USER_ID');
print(userInfo);
} catch (e) {
print('Error: $e');
}
7. 配置 TikTok 开发者账号
为了使用 TikTok API,你需要注册一个 TikTok 开发者账号,并创建一个应用以获取 API Key 和其他认证信息。请参考 TikTok 官方文档完成这些步骤。
8. 遵守 TikTok API 使用条款
在使用 TikTok API 时,务必遵守 TikTok 的使用条款和隐私政策,确保你的应用符合 TikTok 的开发者指南。
示例代码
以下是一个完整的示例代码,展示如何在 Flutter 应用中使用 tiktok_api
插件获取用户信息:
import 'package:flutter/material.dart';
import 'package:tiktok_api/tiktok_api.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: TikTokApiExample(),
);
}
}
class TikTokApiExample extends StatefulWidget {
[@override](/user/override)
_TikTokApiExampleState createState() => _TikTokApiExampleState();
}
class _TikTokApiExampleState extends State<TikTokApiExample> {
final tiktokApi = TikTokApi(apiKey: 'YOUR_TIKTOK_API_KEY');
Map<String, dynamic>? userInfo;
Future<void> fetchUserInfo() async {
try {
final info = await tiktokApi.getUserInfo('USER_ID');
setState(() {
userInfo = info;
});
} catch (e) {
print('Error: $e');
}
}
[@override](/user/override)
void initState() {
super.initState();
fetchUserInfo();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('TikTok API Example'),
),
body: Center(
child: userInfo != null
? Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Username: ${userInfo!['username']}'),
Text('Followers: ${userInfo!['followers']}'),
],
)
: CircularProgressIndicator(),
),
);
}
}