更新记录
1.0.0(2025-08-31)
支持 新浪微博授权登录与分享 支持 iOS平台与安卓平台
平台兼容性
uni-app(4.36)
Vue2 | Vue3 | Chrome | Safari | app-vue | app-vue插件版本 | app-nvue | app-nvue插件版本 | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
- | - | - | - | √ | 1.0.0 | √ | 1.0.0 | 5.1 | 1.0.0 | 12 | 1.0.0 | - |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.36)
Chrome | Safari | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 微信小程序 |
---|---|---|---|---|---|---|---|
- | - | 5.1 | 1.0.0 | 12 | 1.0.0 | - | - |
tt-weibo-sdk
🚀 新浪微博SDK插件,为 uni-app x && uni-app 提供完整的新浪微博集成解决方案,包含登录、分享功能
📖 目录
SDK版本信息
平台 | 版本 | 支持状态 |
---|---|---|
iOS | 3.3.8 | ✅ 完全支持 |
Android | 13.10.5 | ✅ 完全支持 |
功能支持矩阵
功能 | iOS | Android |
---|---|---|
微博登录 | ✅ | ✅ |
微博分享 | ✅ | ✅ |
📚 推荐阅读: 微博开放平台官方文档
🚨 重要提示
⚠️ 必须使用自定义基座运行,否则无法找到插件方法
⚠️ 必须配置正确的重定向地址,否则登录功能无法正常工作
环境配置
前置条件
- 在微博开放平台申请移动应用
- 获取
AppKey
- 配置应用包名、签名和重定向地址
iOS平台配置
1. 配置 URL Scheme
在项目根目录的 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>LSApplicationQueriesSchemes</key>
<array>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<string>weibosdk3.3</string>
<string>sinaweibo</string>
<string>weibo</string>
<string>sinaweibohd</string>
</array>
<!-- URL Scheme 配置 -->
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>Weibo</string>
<key>CFBundleURLSchemes</key>
<array>
<!-- 这里填写您在新浪微博开放平台申请的AppKey,格式为: wb + AppKey -->
<string>wb您的微博AppKey</string>
</array>
</dict>
</array>
</dict>
</plist>
2. 配置通用链接 (Universal Link)
📖 详细配置请参考: uni官方文档-通用链接
Android平台配置
1. 配置 AndroidManifest.xml
在项目根目录的 AndroidManifest.xml
文件中添加以下配置:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="您的包名">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- Android 11+包可见性查询 -->
<queries>
<package android:name="com.sina.weibo" />
<package android:name="com.weico.international" />
</queries>
<application>
<!-- 微博授权Activity -->
<activity
android:name="com.sina.weibo.sdk.auth.AuthActivity"
android:exported="true"
android:launchMode="singleTask"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- 这里填写您在新浪微博开放平台申请的AppKey,格式为: wb + AppKey -->
<data android:scheme="wb您的微博AppKey" />
</intent-filter>
</activity>
<!-- 微博分享Activity -->
<activity
android:name="com.sina.weibo.sdk.share.ShareActivity"
android:exported="true"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 微博Web授权Activity -->
<activity
android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"
android:exported="true"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
</application>
</manifest>
2. 重要配置说明
⚠️ 关键配置项:
android:scheme
必须填写您在微博开放平台申请的 AppKeyWbSdkBrowser
的android:exported="true"
必须设置,否则无法接收微博回调
⚠️ 注意事项:
- 确保在微博开放平台正确配置应用包名和签名
- 测试时请使用与平台配置相同的签名文件
- 重定向地址必须与微博开放平台配置一致
快速开始
1. 导入插件
import { getTTWeiBoSDK } from '@/uni_modules/tt-weibo-sdk';
export default {
data() {
return {
weiboSDK: null as any,
}
},
onLoad() {
// 获取微博SDK实例
this.weiboSDK = getTTWeiBoSDK()
// 注册微博SDK
this.initWeiboSDK()
},
methods: {
// 初始化微博SDK
initWeiboSDK() {
// SDK初始化代码见下方
}
}
}
2. 初始化 SDK
initWeiboSDK() {
if (!this.weiboSDK) {
console.error('微博SDK初始化失败')
return
}
this.weiboSDK?.register({
appKey: "您的微博AppKey", // 必填:微博开放平台申请的AppKey
redirectUrl: "您的重定向地址", // 必填:重定向地址
scope: "all", // 可选:权限范围,默认all
universalLink: "您的通用链接", // iOS可选:通用链接
success: (res) => {
console.log("✅ 微博SDK初始化成功");
},
fail: (err) => {
console.error("❌ 微博SDK初始化失败:", err);
uni.showToast({
title: '微博SDK初始化失败',
icon: 'error'
})
}
});
}
功能介绍
微博授权登录
💡 微博登录需要用户授权,登录成功后会返回accessToken和用户信息
参数说明
TTWeiBoLoginOptions
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
success | function | ❌ | 登录成功回调函数 |
fail | function | ❌ | 登录失败回调函数 |
complete | function | ❌ | 登录完成回调函数 |
返回值 TTWeiBoLoginSuccess
参数 | 类型 | 说明 |
---|---|---|
accessToken | string | Access Token凭证,用于后续访问各开放接口 |
userId | string | 用户唯一标识 |
expiresIn | number | Access Token的过期时间(秒) |
refreshToken | string | 刷新Token,用于刷新accessToken |
示例代码
// 微博登录
handleWeiboLogin() {
this.weiboSDK?.login({
success: (res) => {
console.log("✅ 微博登录成功:", res);
console.log("AccessToken:", res.accessToken);
console.log("用户ID:", res.userId);
console.log("过期时间:", res.expiresIn);
console.log("刷新Token:", res.refreshToken);
// 保存登录信息
uni.setStorageSync('weiboLoginInfo', {
"accessToken": res.accessToken,
"userId": res.userId,
"expiresIn": res.expiresIn,
"refreshToken": res.refreshToken
} as UTSJSONObject);
// 登录成功后获取用户信息
this.getUserInfo()
},
fail: (err) => {
console.error("❌ 微博登录失败:", err);
this.handleLoginError(err)
},
complete: (res) => {
console.log("微博登录完成:", res);
}
});
}
// 处理登录错误
handleLoginError(error: any) {
const errCode = error.errCode;
const errMsg = error.errMsg;
switch(errCode) {
case 201:
console.log('用户取消登录');
break;
case 202:
uni.showToast({
title: '登录失败',
icon: 'error'
});
break;
case 203:
uni.showModal({
title: '微博未安装',
content: '请先安装微博客户端',
showCancel: false
});
break;
case 204:
uni.showToast({
title: '网络错误',
icon: 'error'
});
break;
case 205:
uni.showToast({
title: '授权被拒绝',
icon: 'error'
});
break;
default:
uni.showToast({
title: errMsg || '登录失败',
icon: 'error'
});
break;
}
}
微博分享功能
💡 支持分享文本、图片、网页链接和视频到微博
分享类型
分享类型 (type)
0
- 文本分享1
- 图片分享2
- 网页链接分享3
- 视频分享
参数说明
TTWeiBoShareOptions
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
type | number | ✅ | 分享类型,见上表 |
text | string | 条件 | 分享文本内容(最长2000字符) |
imagePath | string | 条件 | 图片本地路径(图片分享时必填) |
url | string | 条件 | 网页链接(网页分享时必填) |
videoPath | string | 条件 | 视频本地路径(视频分享时必填) |
使用示例
1. 分享文本
shareText() {
this.weiboSDK?.share({
type: 0,
text: '这是一条微博文本分享,支持最长2000个字符的内容。',
success: (res) => {
console.log('✅ 文本分享成功');
uni.showToast({ title: '分享成功' });
},
fail: (err) => {
console.error('❌ 分享失败:', err);
uni.showToast({ title: '分享失败', icon: 'error' });
}
});
}
2. 分享图片
shareImage() {
this.weiboSDK?.share({
type: 1,
text: '分享一张图片',
imagePath: '/static/share-image.jpg', // 本地图片路径
success: (res) => {
console.log('✅ 图片分享成功');
},
fail: (err) => {
console.error('❌ 图片分享失败:', err);
}
});
}
3. 分享网页链接
shareWebPage() {
this.weiboSDK?.share({
type: 2,
text: '分享一个网页链接',
url: 'https://www.example.com',
success: (res) => {
console.log('✅ 网页分享成功');
},
fail: (err) => {
console.error('❌ 网页分享失败:', err);
}
});
}
4. 分享视频
shareVideo() {
this.weiboSDK?.share({
type: 3,
text: '分享一个视频',
videoPath: '/static/share-video.mp4', // 本地视频路径
success: (res) => {
console.log('✅ 视频分享成功');
},
fail: (err) => {
console.error('❌ 视频分享失败:', err);
}
});
}
错误处理
错误码说明
错误码 | 错误信息 | 适用场景 | 解决方案 |
---|---|---|---|
注册错误 | |||
101 | appKey不能为空 | 注册功能 | 提供有效的微博AppKey |
102 | 注册失败 | 注册功能 | 检查注册参数和网络状态 |
103 | SDK未初始化 | 所有功能 | 先调用register方法初始化SDK |
登录错误 | |||
201 | 用户取消登录 | 登录功能 | 用户主动取消,无需处理 |
202 | 登录失败 | 登录功能 | 检查网络和微博客户端状态 |
203 | 微博客户端未安装 | 登录功能 | 提示用户安装微博客户端 |
204 | 网络错误 | 登录功能 | 检查网络连接 |
205 | 授权被拒绝 | 登录功能 | 用户拒绝授权,提示重新授权 |
分享错误 | |||
401 | 分享内容不能为空 | 分享功能 | 提供分享内容 |
402 | 分享类型错误 | 分享功能 | 检查分享类型参数(0-3) |
403 | 图片路径无效 | 图片分享 | 提供有效的本地图片路径 |
404 | 图片数据无效 | 图片分享 | 检查图片文件格式和大小 |
405 | 网址无效 | 网页分享 | 提供有效的网页链接 |
406 | 视频路径无效 | 视频分享 | 提供有效的本地视频路径 |
407 | 分享失败 | 分享功能 | 检查分享参数和网络状态 |
408 | 不支持的分享类型 | 分享功能 | 使用支持的分享类型(0-3) |
409 | 用户取消分享 | 分享功能 | 用户主动取消,无需处理 |
其他错误 | |||
999 | 其他错误 | 所有功能 | 查看原始错误信息和详细日志 |
常见问题
1. 找不到插件方法?
解决方案: 确保使用自定义基座运行,标准基座不包含原生插件。
2. iOS平台登录/分享无响应?
解决方案:
- 检查 Info.plist 中的 URL Scheme 配置
- 确认通用链接配置正确
- 验证微博开放平台的 iOS 应用配置
- 确保 URL Scheme 格式正确(直接使用AppKey)
3. Android平台功能异常?
解决方案:
- 确认应用签名与微博开放平台配置一致
- 检查包名是否正确
- 确保微博客户端版本支持相关功能
- 验证重定向地址配置
4. 登录失败或授权被拒绝?
常见原因:
- 重定向地址配置错误
- 微博开放平台应用配置不完整
- 用户拒绝授权
- 网络连接问题
解决方案:
- 检查重定向地址是否与微博开放平台配置一致
- 确认应用权限配置正确
- 提示用户重新授权
- 检查网络连接状态
5. 分享图片/视频失败?
解决方案:
- 确保图片/视频路径为本地路径,不支持网络文件
- 检查文件是否存在且格式正确
- 图片/视频大小不要超过限制
6. 重定向地址配置问题?
重要说明:
- 重定向地址是微博登录的关键配置
- 必须与微博开放平台配置完全一致
- 支持自定义协议,如:
myapp://weibo/callback
- 建议使用HTTPS协议的URL
7. 微博客户端版本兼容性?
解决方案:
- 建议使用最新版本的微博客户端
- 某些功能可能需要特定版本的微博支持
- 在功能使用前先检查微博是否安装
- 提供降级方案(如网页版登录)
8. 通用链接配置问题?
解决方案:
- 确保域名支持HTTPS
- 验证apple-app-site-association文件配置正确
- 检查苹果开发者账号中的Associated Domains配置
- 测试通用链接是否能正常跳转
9. 分享内容长度限制?
重要提示:
- 文本分享最长2000个字符
- 图片文件建议小于10MB
- 视频文件建议小于100MB
- 网页链接必须是有效的URL格式
📞 技术支持
如果在使用过程中遇到问题,请:
- 查阅上方常见问题
- 参考新浪微博官方开发文档
- 检查配置是否正确
- 确认新浪微博客户端版本
祝您开发愉快! 🎉