更新记录

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
微博登录
微博分享

📚 推荐阅读: 微博开放平台官方文档

🚨 重要提示

⚠️ 必须使用自定义基座运行,否则无法找到插件方法

⚠️ 必须配置正确的重定向地址,否则登录功能无法正常工作

环境配置

前置条件

  1. 微博开放平台申请移动应用
  2. 获取 AppKey
  3. 配置应用包名、签名和重定向地址

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 必须填写您在微博开放平台申请的 AppKey
  • WbSdkBrowserandroid: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格式

📞 技术支持

如果在使用过程中遇到问题,请:

  1. 查阅上方常见问题
  2. 参考新浪微博官方开发文档
  3. 检查配置是否正确
  4. 确认新浪微博客户端版本

祝您开发愉快! 🎉

隐私、权限声明

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

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

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