Flutter微博功能集成插件weibo_kit的使用
Flutter 微博功能集成插件 weibo_kit
的使用
简介
weibo_kit
是一个用于在 Flutter 应用中集成新浪微博 SDK 的插件。它提供了登录、分享等功能。
相关工具
文档
Android 配置
不需要做任何额外的接入工作,混淆已打入 Library,随 Library 引用,自动添加到 APK 打包混淆。
获取 Android 微信签名信息
非官方方法 -> 反编译 app_signatures.apk 所得
命令:
keytool -list -v -keystore ${your_keystore_path} -storepass ${your_keystore_password} 2>/dev/null | grep -p 'MD5:.*' -o | sed 's/MD5://' | sed 's/ //g' | sed 's/://g' | awk '{print tolower($0)}'
示例:
keytool -list -v -keystore example/android/app/infos/dev.jks -storepass 123456 2>/dev/null | grep -p 'MD5:.*' -o | sed 's/MD5://' | sed 's/ //g' | sed 's/://g' | awk '{print tolower($0)}'
输出:
28424130a4416d519e00946651d53a46
iOS 配置
URL Types
在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type”添加“URL scheme”为你所注册的应用程序 ID。
URL Types
weibosdk: identifier=weibo schemes=wb${appKey}
Info.plist
iOS 9 系统策略更新,限制了 HTTP 协议的访问,此外应用需要在“Info.plist”中将要使用的 URL Schemes 列为白名单,才可正常检查其他应用是否安装。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>sinaweibo</string>
<string>sinaweibohd</string>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<string>weibosdk3.3</string>
</array>
Flutter 集成
添加依赖
在 pubspec.yaml
文件中添加依赖:
dependencies:
weibo_kit: ^${latestTag}
或者使用 Git 方式:
dependencies:
weibo_kit:
git:
url: https://github.com/rxreader/weibo_kit.git
示例代码
以下是一个完整的示例 Demo,展示了如何使用 weibo_kit
插件进行微博登录和分享功能。
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
import 'package:weibo_kit/weibo_kit.dart';
const String _WEIBO_APP_KEY = 'your weibo app key';
const String _WEIBO_UNIVERSAL_LINK = 'your weibo universal link';
const List<String> _WEIBO_SCOPE = <String>[
WeiboScope.ALL,
];
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Home(),
);
}
}
class Home extends StatefulWidget {
const Home({super.key});
[@override](/user/override)
State<Home> createState() => _HomeState();
}
class _HomeState extends State<Home> {
late final StreamSubscription<BaseResp> _respSubs;
AuthResp? _authResp;
[@override](/user/override)
void initState() {
super.initState();
_respSubs = Weibo.instance.respStream().listen(_listenResp);
}
void _listenResp(BaseResp resp) {
if (resp is AuthResp) {
_authResp = resp;
final String content = 'auth: ${resp.errorCode}';
_showTips('登录', content);
} else if (resp is ShareMsgResp) {
final String content = 'share: ${resp.errorCode}';
_showTips('分享', content);
}
}
[@override](/user/override)
void dispose() {
_respSubs.cancel();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Weibo Kit Demo'),
),
body: ListView(
children: <Widget>[
ListTile(
title: Text('注册APP'),
onTap: () async {
await Weibo.instance.registerApp(
appKey: _WEIBO_APP_KEY,
universalLink: _WEIBO_UNIVERSAL_LINK,
scope: _WEIBO_SCOPE,
);
_showTips('注册APP', '注册成功');
},
),
ListTile(
title: Text('环境检查'),
onTap: () async {
final String content =
'weibo: ${await Weibo.instance.isInstalled()}';
_showTips('环境检查', content);
},
),
ListTile(
title: Text('登录'),
onTap: () {
Weibo.instance.auth(
appKey: _WEIBO_APP_KEY,
scope: _WEIBO_SCOPE,
);
},
),
ListTile(
title: Text('用户信息'),
onTap: () async {
if (_authResp?.isSuccessful ?? false) {
final WeiboUserInfoResp userInfoResp =
await WeiboApi.getUserInfo(
appkey: _WEIBO_APP_KEY,
userId: _authResp!.userId!,
accessToken: _authResp!.accessToken!,
);
if (userInfoResp.isSuccessful) {
_showTips('用户信息',
'${userInfoResp.screenName}\n${userInfoResp.description}\n${userInfoResp.location}\n${userInfoResp.profileImageUrl}');
} else {
_showTips('用户信息',
'获取用户信息失败\n${userInfoResp.errorCode}:${userInfoResp.error}');
}
}
},
),
ListTile(
title: Text('文字分享'),
onTap: () {
Weibo.instance.shareText(
text: 'Share Text',
);
},
),
ListTile(
title: Text('图片分享'),
onTap: () async {
final File file = await DefaultCacheManager().getSingleFile(
'https://www.baidu.com/img/bd_logo1.png?where=super');
await Weibo.instance.shareImage(
text: 'Share Text',
imageUri: Uri.file(file.path),
);
},
),
ListTile(
title: Text('网页分享'),
onTap: () async {
// Uncomment and modify the following code to implement webpage sharing
/*
final File file = await DefaultCacheManager().getSingleFile(
'https://www.baidu.com/img/bd_logo1.png?where=super');
final image.Image thumbnail =
image.decodeImage(file.readAsBytesSync())!;
Uint8List thumbData = thumbnail.getBytes();
if (thumbData.length > 32 * 1024) {
thumbData = Uint8List.fromList(image.encodeJpg(thumbnail,
quality: 100 * 32 * 1024 ~/ thumbData.length));
}
await Weibo.instance.shareWebpage(
title: 'title',
description: 'share webpage',
thumbData: thumbData.buffer.asUint8List(),
webpageUrl: 'https://www.baidu.com',
);
*/
},
),
],
),
);
}
void _showTips(String title, String content) {
showDialog<void>(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text(title),
content: Text(content),
);
},
);
}
}
更多关于Flutter微博功能集成插件weibo_kit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter微博功能集成插件weibo_kit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成并使用weibo_kit
插件来实现微博功能的基本示例代码。这个示例将涵盖基本的初始化、登录和分享功能。
首先,确保你已经在你的Flutter项目中添加了weibo_kit
插件。你可以在你的pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter:
sdk: flutter
weibo_kit: ^最新版本号 # 请替换为实际可用的最新版本号
然后运行flutter pub get
来安装依赖。
1. 配置微博SDK
在使用weibo_kit
之前,你需要在微博开放平台(https://open.weibo.com/)上创建一个应用,并获取到App Key
和App Secret
。然后,你需要在你的Android和iOS项目中配置这些信息。
Android配置
在android/app/src/main/AndroidManifest.xml
中添加以下权限和配置:
<manifest ...>
<application ...>
<!-- 添加微博SDK所需的Activity -->
<activity
android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="false"
android:windowSoftInputMode="adjustResize" >
</activity>
<!-- 添加微博SDK所需的meta-data -->
<meta-data
android:name="WEIBO_APP_KEY"
android:value="你的AppKey" />
</application>
<!-- 添加网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
iOS配置
在ios/Runner/Info.plist
中添加微博SDK所需的配置:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>wb你的AppKey</string> <!-- 替换为你的AppKey,前面加wb -->
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>sinaweibohdsso</string>
<string>sinaweibohd</string>
<string>sinaweibosdk</string>
<string>weibosdk2.5</string>
</array>
在ios/Runner/AppDelegate.swift
中,添加微博SDK的初始化代码:
import UIKit
import Flutter
import weibosdk // 导入微博SDK
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
// 初始化微博SDK
WBSDKConfigure.configureWithAppKey("你的AppKey", appSecret: "你的AppSecret")
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
2. 使用weibo_kit插件
在你的Flutter代码中,你可以这样使用weibo_kit
插件:
import 'package:flutter/material.dart';
import 'package:weibo_kit/weibo_kit.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Weibo Kit Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: _login,
child: Text('Login with Weibo'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _share,
child: Text('Share to Weibo'),
),
],
),
),
),
);
}
void _login() async {
try {
await WeiboKit.login(
appId: '你的AppKey', // 替换为你的AppKey
redirectUri: 'https://your_redirect_uri', // 替换为你的回调URI
);
print('Login successful');
} catch (e) {
print('Login failed: $e');
}
}
void _share() async {
try {
await WeiboKit.share(
text: 'Hello Weibo!',
imageUrl: 'https://example.com/image.jpg', // 替换为你想分享的图片URL
thumbImageUrl: 'https://example.com/thumb_image.jpg', // 可选,缩略图URL
);
print('Share successful');
} catch (e) {
print('Share failed: $e');
}
}
}
注意事项
- 权限处理:在实际应用中,你可能需要处理更多的权限请求,比如存储权限,用于保存分享的图片等。
- 错误处理:示例代码中的错误处理较为简单,实际项目中可能需要更详细的错误处理和用户反馈。
- UI定制:示例代码中的UI较为简单,你可以根据实际需求进行UI定制。
这样,你就可以在Flutter项目中集成并使用weibo_kit
插件来实现微博的登录和分享功能了。