更新记录

1.0.18(2023-12-18)

  • 升级 facebook android sdk 16.3.0
  • 升级 facebook ios sdk 16.3.1
  • 支持视频分享

1.0.17(2023-10-25)

  • android升级sdk 16.2.0
  • ios升级sdk 16.1.3
  • 修复ios深度链接不回调

1.0.16(2023-04-06)

  • 升级Android sdk 16.0.0
  • 升级iOS sdk 14.1.0 (兼容最低iOS11)
查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 14.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:12 - 17

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


使用文档 (更多插件及问题,请加微信:zhuzheVIP1)

温馨提示

  • 官方的Facebook授权与此插件有冲突,请二选一,同时使用打包会失败

  • android打包一定要用自有证书云端证书

  • 手机一定要科学上网

使用前提

使用前必须阅读

插件配置

  1. App 原生插件配置

pluginConfig

  • applicationId: 配置 Facebook 应用编号 (比如: 657055074975650)
  • applicationName: 配置应用名称
  • clientToken: 配置客户端 Token(从 sdk13 开始,预计 2022 年,暂时随便填写)

从 sdk13 开始,clientToken 为必填项,从下面位置获取 clientToken

{
 "ios": {
   "urltypes": [
     {
       "urlschemes": [
         "fb657055074975650"
       ]
     }
   ]
 }
}

注意

如果云打包找不到参数配置,请修改manifest.json,在parameters添加如下
"applicationId": {
  "key": "FacebookAppID",
  "des": "Facebook应用编号"
},
"applicationName": {
  "key": "FacebookDisplayName",
  "des": "Facebook应用名称"
},
"clientToken": {
  "key": "FacebookClientToken",
  "des": "FacebookClientToken"
}

测试的时候,一定要用上面注册开发者平台的 fb 账号,登录手机 facebook app,账号要保持一致

使用

需要使用的地方获取module

var facebook = uni.requireNativePlugin("sn-facebook");
  • getKeyHash - 获取key hash(仅android提供)
facebook.getKeyHash((e) => {
  if (e.code == 0) {
    let keyhash = e.keyHash[0];
    console.log("keyhash", keyhash);
  }
});
facebook.login((e) => {
// e 对象如下
// {
//     result: true,
//     data: {
//         token: '',
//         userId: '',
//         name: '',
//         email: '',
//         gender: '',
//         birthday: ''
//         photo: ''
//     }
// }

uni.showToast({
  icon: "none",
  title: JSON.stringify(e),
});
});
facebook.loginWithParams(
{
  permissions: [
    // 权限,更多权限请看 https://developers.facebook.com/docs/permissions/reference
    "email",
    // "user_photos",
    // "user_gender",
    // "user_birthday",
    "public_profile",
  ],
  // 返回字段,更多字段请查看 https://developers.facebook.com/docs/graph-api/reference/user/
  fields: "id, name, email, picture", // gender, birthday,
},
(e) => {
  uni.showToast({
    icon: "none",
    title: JSON.stringify(e),
  });
},
);
facebook.getUserInfo(
{
  // 返回字段,更多字段请查看 https://developers.facebook.com/docs/graph-api/reference/user/
  fields: "id, name, email, gender, birthday, picture", // 可选参数,示例是默认值
},
(e) => {
  uni.showToast({
    icon: "none",
    title: JSON.stringify(e),
  });
},
);
facebook.isLoggedIn((e) => {
if (e == true) {
  // 已登录
}
});
const rs = facebook.isLoggedInSync();
uni.showToast({
icon: "none",
title: "登录状态:" + JSON.stringify(rs),
});
facebook.logout((e) => {
uni.showToast({
  icon: "none",
  title: "登出成功",
});
});
// 分享:分享链接
facebook.share(
{ type: 0, url: "https://m.facebook.com", quote: "test" },
(e) => {
  uni.showToast({
    icon: "none",
    title: JSON.stringify(e),
  });
},
);
// 分享:分享图片
facebook.share({ type: 1, image: "/static/logo.png" }, (e) => {
uni.showToast({
  icon: "none",
  title: JSON.stringify(e),
});
});
// 分享:分享视频
facebook.share({ 
type: 2, 
video: '/static/testvideo.mp4' // 仅android生效,ios只能从相册选择(插件已处理)
}, (e) => {
uni.showToast({
  icon: "none",
  title: JSON.stringify(e),
});
});
facebook.logEvent(
{
  name: "fb_mobile_add_to_cart", // 必填
  valueToSum: 34, // 可以不填(只能取整数,facebook的bug)
  params: {
    fb_currency: 'CNY',
    fb_content_type: 'product'
  }, // 可以不填,但要根据文档,如果文档必填,那就需要
},
(e) => {},
);
facebook.fetchDeferredAppLink((e) => {
if (e.code == 0) {
  // e.url // for iOS
  // e.data // for Android
}
});
if (
plus.runtime.isApplicationExist({
  pname: "com.facebook.katana",
  action: "fb://", // iOS需要把fb添加到白名单中
})
) {
//已安装
} else {
//未安装;
}

常见问题

  1. 缺少 sn-facebook 插件

    一定要记得自定义基座并选择使用自定义基座

  2. 授权提示没有权限(Invalid Scopes)

    这类问题一般发生在 facebook 的应用开发版本中(已经上线的 facebook 应用需要去左侧菜单【应用审核】->【权限和功能】申请高级访问权限)

    如果遇到此问题,请检查你用的 facebook 授权账号是否在测试用户名单中,如果在,请使用 loginWithParams 试试,否则请到https://developers.facebook.com/ 将 facebook 账号添加到【角色】-> 【测试用户】

  3. hashkey 可能错误

    请使用getKeyHash方法获取

  4. 如果授权一直返回 false,肯定是没有进行配置

  5. Facebook login is currently unavailable

  6. 分享仅支持单一,不可组合(同时分享链接与图片等)

  7. 如果登录提示应用不可用、未激活等,请仔细查看facebook应用审核

  8. Android v0.3.0(需要升级) 最新版本是13.0.0

    img

    这个问题是因为账号被限制使用sdk的最新版本13.0.0,只能降级,但是插件市场无法使用插件历史版本,因此只能购买离线包