更新记录
1.0.1(2025-11-03)
修复已知问题
1.0.0(2025-11-01)
支持Android、iOS平台授权登录
平台兼容性
uni-app(4.36)
| Vue2 | Vue2插件版本 | Vue3 | Vue2插件版本 | 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 | 5.0 | 1.0.0 | 13 | 1.0.0 | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.36)
| Chrome | Safari | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|---|---|
| × | × | 5.0 | 1.0.0 | 13 | 1.0.0 | × | × |
tt-meta-sdk
🚀 专业版 Meta SDK 插件,为 uni-app x & uni-app 提供完整的 Facebook 集成解决方案,包含授权登录等功能
📖 目录
SDK版本信息
| 平台 | 版本 | 支持状态 |
|---|---|---|
| iOS | 17.0.2 | ✅ 完全支持 |
| Android | 18.0.3 | ✅ 完全支持 |
📚 推荐阅读:
🚨 重要提示
⚠️ 必须使用自定义基座运行,否则无法找到插件方法
⚠️ 测试前需确保应用已通过 Facebook 开发者平台审核,否则登录可能失败
⚠️ Android: 确保应用签名与 Facebook 开发者平台配置的签名一致
⚠️ 编译报错排查:本插件会定期更新至最新版SDK,某些情况下编译报错可能不是插件不可用,而是本地环境问题或与官方插件冲突,遇到此类情况可通过IM联系我协助解决
环境配置
前置条件
- 在 Facebook 开发者平台 创建应用
- 获取
App ID和ClientToken - 配置应用包名和签名
iOS平台配置
1. 配置 Info.plist
无需在项目根目录添加或修改 Info.plist。请直接编辑插件内的 uni_modules/tt-meta-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>fb+AppID</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-share-api</string>
</array>
<key>FacebookAppID</key>
<string>APP-ID</string>
<key>FacebookClientToken</key>
<string>CLIENT-TOKEN</string>
<key>FacebookDisplayName</key>
<string>APP-NAME</string>
</dict>
</plist>
配置说明:
fb+AppID: 将+AppID替换为您的实际 Facebook App ID,例如fb123456789APP-ID: 替换为您的 Facebook App IDCLIENT-TOKEN: 替换为您的 Facebook Client TokenAPP-NAME: 替换为您的应用名称
Android平台配置
1. 配置 AndroidManifest.xml
无需在项目根目录修改配置。请直接编辑插件内的 uni_modules/tt-meta-sdk/utssdk/app-android/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="uts.sdk.modules.ttMetaSDK">
<uses-permission android:name="android.permission.INTERNET" />
<queries>
<provider android:authorities="com.facebook.katana.provider.PlatformProvider" />
</queries>
<application>
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="此处填写您的FacebookAppId"/>
<meta-data android:name="com.facebook.sdk.ClientToken" android:value="此处填写您的ClientToken"/>
<activity android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" />
<activity android:name="com.facebook.CustomTabActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="fb此处填写您的FacebookAppId" />
</intent-filter>
</activity>
</application>
</manifest>
配置说明:
fb此处填写您的FacebookAppId: 替换为fb+ 您的 Facebook App ID,例如fb123456789此处填写您的ClientToken: 替换为您的 Facebook Client Token此处填写您的FacebookAppId: 替换为您的 Facebook App ID(不带 fb 前缀)
快速开始
导入插件
uni-app x 版本
import * as metaSdk from "@/uni_modules/tt-meta-sdk";
export default {
data() {
return {
metaSDK: null as metaSdk.TTMetaSDK | null,
}
},
onLoad() {
// 初始化Meta SDK实例
this.metaSDK = metaSdk.getTTMetaSDK()
},
methods: {
// 使用SDK功能
}
}
uni-app 版本
import * as metaSdk from "@/uni_modules/tt-meta-sdk";
export default {
data() {
return {
metaSDK: metaSdk.TTMetaSDK,
}
},
onLoad() {
// 初始化Meta SDK实例
this.metaSDK = metaSdk.getTTMetaSDK()
},
methods: {
// 使用SDK功能
}
}
授权登录
参数说明
TTMetaLoginOptions
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| permissions | Array |
否 | 权限列表,如 ["public_profile", "email"] |
返回值 TTMetaLoginSuccess
| 参数 | 类型 | 说明 |
|---|---|---|
| code | string | 用于换取access_token的授权码 |
| userID | string | null | 用户ID |
| name | string | null | 用户名称 |
| pictureURL | string | null | 用户头像URL |
| string | null | 用户邮箱 |
示例代码
uni-app x 版本
// Facebook 授权登录
handleFacebookLogin() {
this.metaSDK?.login({
permissions: ["public_profile", "email"], // 请求权限
success: (result) => {
console.log("✅ Facebook 登录成功:", result);
console.log("授权码:", result.code);
if (result.userID) {
console.log("用户ID:", result.userID);
}
if (result.name) {
console.log("用户名:", result.name);
}
if (result.email) {
console.log("邮箱:", result.email);
}
if (result.pictureURL) {
console.log("头像URL:", result.pictureURL);
}
// 可以将授权码发送到后端服务器进行进一步处理
this.sendCodeToServer(result.code)
},
fail: (error) => {
console.error("❌ Facebook 登录失败:", error);
uni.showToast({
title: '登录失败',
icon: 'error'
})
},
complete: (result) => {
console.log("Facebook 登录完成");
}
} as metaSdk.TTMetaLoginOptions)
}
// 发送授权码到后端服务器
sendCodeToServer(code: string) {
uni.request({
url: 'https://your-server.com/api/facebook/login',
method: 'POST',
data: { code },
success: (res) => {
// 处理登录成功逻辑
console.log('登录成功:', res.data)
},
fail: (err) => {
console.error('登录请求失败:', err)
}
})
}
uni-app 版本
// Facebook 授权登录
handleFacebookLogin() {
this.metaSDK.login({
permissions: ["public_profile", "email"], // 请求权限
success: (result) => {
console.log("✅ Facebook 登录成功:", result);
console.log("授权码:", result.code);
if (result.userID) {
console.log("用户ID:", result.userID);
}
if (result.name) {
console.log("用户名:", result.name);
}
if (result.email) {
console.log("邮箱:", result.email);
}
if (result.pictureURL) {
console.log("头像URL:", result.pictureURL);
}
// 可以将授权码发送到后端服务器进行进一步处理
this.sendCodeToServer(result.code)
},
fail: (error) => {
console.error("❌ Facebook 登录失败:", error);
uni.showToast({
title: '登录失败',
icon: 'error'
})
},
complete: (result) => {
console.log("Facebook 登录完成");
}
})
}
// 发送授权码到后端服务器
sendCodeToServer(code) {
uni.request({
url: 'https://your-server.com/api/facebook/login',
method: 'POST',
data: { code },
success: (res) => {
// 处理登录成功逻辑
console.log('登录成功:', res.data)
},
fail: (err) => {
console.error('登录请求失败:', err)
}
})
}
退出登录
参数说明
TTMetaLogoutOptions
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| success | function | 否 | 成功回调 |
| fail | function | 否 | 失败回调 |
| complete | function | 否 | 完成回调 |
示例代码
uni-app x 版本
// Facebook 退出登录
handleFacebookLogout() {
this.metaSDK?.logout({
success: () => {
console.log("✅ Facebook 退出登录成功");
uni.showToast({
title: '退出成功',
icon: 'success'
})
},
fail: (error) => {
console.error("❌ Facebook 退出登录失败:", error);
uni.showToast({
title: '退出失败',
icon: 'error'
})
},
complete: () => {
console.log("Facebook 退出登录完成");
}
} as metaSdk.TTMetaLogoutOptions)
}
uni-app 版本
// Facebook 退出登录
handleFacebookLogout() {
this.metaSDK.logout({
success: () => {
console.log("✅ Facebook 退出登录成功");
uni.showToast({
title: '退出成功',
icon: 'success'
})
},
fail: (error) => {
console.error("❌ Facebook 退出登录失败:", error);
uni.showToast({
title: '退出失败',
icon: 'error'
})
},
complete: () => {
console.log("Facebook 退出登录完成");
}
})
}
错误处理
错误码说明
| 错误码 | 错误信息 | 说明 |
|---|---|---|
| 101 | 取消授权 | 用户取消了授权操作 |
| 102 | 登录返回异常 | 登录过程中发生异常 |
| 103 | 用户未登录 | 用户尚未登录 |
| 104 | Activity 上下文获取失败 | Android 平台无法获取 Activity 上下文 |
| 105 | 访问令牌获取失败 | 无法获取 Facebook 访问令牌 |
| 106 | 用户信息获取失败 | 无法获取用户信息 |
| 999 | 其他错误 | 其他未知错误,请查看原始错误信息 |
| 1000 | 暂不支持 | 该功能暂不支持 |
错误处理示例
uni-app x 版本
handleLoginError(error: any) {
switch (error.errCode) {
case 101:
uni.showToast({
title: '用户取消授权',
icon: 'none'
})
break;
case 102:
uni.showToast({
title: '登录异常,请重试',
icon: 'error'
})
break;
case 103:
uni.showToast({
title: '用户未登录',
icon: 'none'
})
break;
case 104:
uni.showToast({
title: 'Activity 上下文获取失败',
icon: 'error'
})
break;
case 105:
uni.showToast({
title: '访问令牌获取失败',
icon: 'error'
})
break;
case 106:
uni.showToast({
title: '用户信息获取失败',
icon: 'error'
})
break;
case 999:
uni.showToast({
title: `登录失败: ${error.errMsg}`,
icon: 'error'
})
break;
case 1000:
uni.showToast({
title: '该功能暂不支持',
icon: 'none'
})
break;
default:
uni.showToast({
title: '未知错误',
icon: 'error'
})
break;
}
}
uni-app 版本
handleLoginError(error) {
switch (error.errCode) {
case 101:
uni.showToast({
title: '用户取消授权',
icon: 'none'
})
break;
case 102:
uni.showToast({
title: '登录异常,请重试',
icon: 'error'
})
break;
case 103:
uni.showToast({
title: '用户未登录',
icon: 'none'
})
break;
case 999:
uni.showToast({
title: `登录失败: ${error.errMsg}`,
icon: 'error'
})
break;
case 1000:
uni.showToast({
title: '该功能暂不支持',
icon: 'none'
})
break;
default:
uni.showToast({
title: '未知错误',
icon: 'error'
})
break;
}
}
常见问题
Q: 为什么登录失败?
A: 请检查以下几点:
- 确保已在 Facebook 开发者平台正确配置应用
- 检查 App ID 是否正确配置
- 确保应用包名和签名与 Facebook 开发者平台配置一致
- 检查网络连接是否正常
Q: 如何获取更多用户信息?
A:
- 在
permissions参数中添加所需权限,如["public_profile", "email", "user_friends"] - 通过后端使用获取到的访问令牌调用 Facebook Graph API
Q: 支持哪些权限?
A: 常用权限包括:
public_profile: 基本公开信息email: 邮箱地址user_friends: 好友列表user_birthday: 生日信息user_location: 位置信息
更多权限请参考 Facebook 权限文档
Q: 如何处理权限被拒绝的情况?
A:
- 在
fail回调中检查错误信息 - 向用户说明权限的必要性
- 引导用户重新授权或使用替代方案
Q: 登录后如何保持登录状态?
A:
- Facebook SDK 会自动管理登录状态
- 应用重启后可以检查当前登录状态
- 建议在后端验证访问令牌的有效性
Q: 如何在开发环境中测试?
A:
- 在 Facebook 开发者平台添加测试用户
- 确保开发环境的包名和签名与配置一致
- 使用测试用户账号进行登录测试
Q: 生产环境部署注意事项?
A:
- 确保应用已通过 Facebook 审核
- 使用生产环境的 App ID 和 App Secret
- 配置正确的隐私政策和服务条款链接
- 测试所有登录流程和权限请求
📞 技术支持: 如遇到问题,请通过 IM 联系技术支持 📚 更多资源: Facebook 开发者文档
🎉 祝您开发愉快!

收藏人数:
购买源码授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(1)
下载 147
赞赏 1
下载 10674160
赞赏 1797
赞赏
京公网安备:11010802035340号