facebook

isInstalled logout getCurrentToken shareLinked shareVideo addEvent

概述

facebook SDK 概述

facebook模块封装了facebook授权登录及其分享功能,使用之前需要去创建应用。

配置 文件:

使用此模块前需先配置 config.xml文件,方法如下:

  • 名称:facebook
  • 参数:urlScheme 、appId
  • 配置示例:

    ```

  • 字段描述:

    urlScheme:(必须配置)在 Facebook 开放平台创建的应用的 appId 拼接而成,如fb561665727361237

    appId:(必须配置)在 Facebook 开放平台创建的应用的 appId

针对 android 平台配置方法:

  • 配置示例:
  1. <meta-data
  2. name="com.facebook.sdk.ApplicationId"
  3. value="fb561665727361237" />
  • 字段描述:

    value:(必须配置)在 Facebook 开放平台创建的应用的 appId 拼接而成,fb+appID


注意:

1, iOS 平台上必须添加白名单,如下:

  1. <preference name="querySchemes" value="fb,fbapi,fb-messenger-api,fbauth2,fbshareextension" />

详情参考 APICloud 官方文档之——-

2, iOS 平台上必须制作 Info.plist 文件,然后放到res资源文件夹下。配置内容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>FacebookAppID</key>
  6. <string>748801072229448</string>
  7. <key>FacebookDisplayName</key>
  8. <string>FacebookDisplayName</string>
  9. </dict>
  10. </plist>

需要把其中的 App ID 和 Display Name 改为自己的。

详情参考 APICloud 文档之——-plist文件配置

3,Android facebook 开发平台上的默认活动类名请填写:com.uzmap.pkg.EntranceActivity

4,Android 常见错误://community.apicloud.com/bbs/forum.php?mod=viewthread&tid=66770&page=1&extra=#pid378595

5,android从1.0.2版本开始需要升级环境编译

注意:iOS端最低适配版本是iOS 8.0

模块接口

isInstalled

判断当前设备是否安装facebook客户端 注意: iOS 平台上必须添加白名单

  1. <preference name="querySchemes" value="fb,fbapi,fb-messenger-api,fbauth2,fbshareextension" />

isInstalled(callback(ret, err))

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. installed: true //布尔型;true||false,当前设备是否安装facebook客户端
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0 //数字类型;
  3. //错误码:
  4. //-1(未知错误),
  5. //0(成功)
  6. }

示例代码

  1. var facebook = api.require('facebook');
  2. facebook.isInstalled(function(ret, err) {
  3. if (ret.installed) {
  4. alert("当前设备已安装facebook客户端");
  5. } else {
  6. alert('当前设备未安装facebook客户端');
  7. }
  8. });

可用性

iOS系统

可提供的1.0.0及更高版本

login

Facebook 登录授权

login({params}, callback(ret, err))

params

appId:

  • 类型:字符串
  • 描述:(可选项)开发者在 facebook 开放平台申请的应用 ID,若不传则模块从当前 widget 包内的 config.xml 文件内读取,若 config.xml 文件内未配置则模块报错

permissions:

  • 类型:JSON 数组
  • 描述:(可选项)向用户申请访问 facebook 的权限,如:(public_profile,email,user_birthday,user_likes),取值范围参考
  • 默认:[‘public_profile’,’email’,’user_birthday’,’user_likes’]

callback(ret, err)

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔类型;是否成功返回
  3. isCancelled: false, //布尔类型;用户是否取消本次授权登录,若为 true 则以下参数均为 undefined
  4. token: "", //字符串类型;返回 token
  5. userId:'', //字符串类型;返回用户 ID
  6. refreshDate:'', //字符串类型;返回 token 最新刷新时间,格式:yyyy-MM-dd HH:mm:ss
  7. expirationDate:'', //字符串类型;返回 token 过期时间,格式:yyyy-MM-dd HH:mm:ss
  8. appId:'', //字符串类型;返回 appID
  9. permissions:'' //JSON 数组;返回用户授予的权限,如:user_birthday,email,user_likes,public_profile
  10. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: -1, //数字类型;错误码,取值范围如下:
  3. // -1:未知错误
  4. // 1:config.xml 未配置 appId
  5. // 2:用户未授权
  6. // 3:出现错误,详情参考错误信息 msg
  7. msg: '' //字符串类型;错误信息,当code 为 3 时有值
  8. }

示例代码

  1. var facebook = api.require('facebook');
  2. facebook.login({
  3. appId: '',
  4. permissions:
  5. },function(ret, err){
  6. if(ret.status) {
  7. api.alert({msg:JSON.stringify(ret)});
  8. } else {
  9. api.alert({msg:JSON.stringify(err)});
  10. }
  11. });

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

logout

应用登出,模块会清空当前 app 内保存的 token 等信息

logout()

示例代码

  1. var facebook = api.require('facebook');
  2. facebook.logout();

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

getUserInfo

获取用户信息

getUserInfo({params}, callback(ret, err))

params

parameters:

  • 类型:JSON对象
  • 描述:(可选项)请求权限,不传则取默认值。
  • 内部字段:

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔类型;是否成功返回
  3. result: { //JSON 对象;返回的用户信息,本参数内容随不同情况而变动,具体参考实际返回值
  4. birthday : "05/24/1988", //
  5. first_name: "\U4e91\U5e06",//
  6. friends: { //
  7. data: ( ),
  8. summary: {
  9. }
  10. },
  11. id: 246810649072103,
  12. last_name: "\U5b59",
  13. link: "https://www.facebook.com/app_scoped_user_id/246810649072103/",
  14. name:"\U5b59\U4e91\U5e06",
  15. picture: {
  16. data: {
  17. is_silhouette: 0,
  18. url: "https://fb-s-c-a.akamaihd.net/h-ak-xfl1/v/t1.0-1/p200x200/15241764_246791139074054_2486377770518646165_n.jpg?oh=56c39672eba49292f31f7084f727a10e&oe=58C3C0B8&__gda__=1492541087_aba14dff2768c4d9a4215ef67cc6ccaa"//本参数若出现 & 符号则用 %26 代替后方可访问该图片
  19. }
  20. }
  21. }
  22. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: -1, //数字类型;错误码
  3. msg: '' //字符串类型;错误信息
  4. }

示例代码

  1. var facebook = api.require('facebook');
  2. facebook.getUserInfo(function(ret, err){
  3. if(ret.status) {
  4. api.alert({msg:JSON.stringify(ret)});
  5. } else {
  6. api.alert({msg:JSON.stringify(err)});
  7. }
  8. });

Android系统、iOS系统

可提供的1.0.0及更高版本

getCurrentToken

获取当前 app 内的 token

getCurrentToken(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. isLogin: true, //布尔类型;是否已登录,若为 false 则以下参数均为 undefined
  3. token: "", //字符串类型;返回 token
  4. userId:'', //字符串类型;返回用户 ID
  5. refreshDate:'', //字符串类型;返回 token 最新刷新时间,格式:yyyy-MM-dd HH:mm:ss
  6. expirationDate:'', //字符串类型;返回 token 过期时间,格式:yyyy-MM-dd HH:mm:ss
  7. appId:'', //字符串类型;返回 appID
  8. }

示例代码

  1. var facebook = api.require('facebook');
  2. facebook.getCurrentToken(function(ret){
  3. if(ret.isLogin) {
  4. api.alert({msg:JSON.stringify(ret)});
  5. } else {
  6. alert('尚未登录');
  7. }
  8. });

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

refreshToken

刷新当前 app 内的 token

refreshToken(callback(ret))

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true //布尔类型;是否刷新成功
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: 0, //数字类型;错误码
  3. msg: '' //字符串类型;错误信息
  4. }

示例代码

  1. var facebook = api.require('facebook');
  2. facebook.refreshToken(function(ret){
  3. if(ret.status) {
  4. api.alert({msg:'刷新成功'});
  5. } else {
  6. alert('刷新失败');
  7. }
  8. });

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

shareLinked

向 facebook 分享链接

shareLinked({params}, callback(ret, err))

params

url:

  • 类型:字符串
  • 描述:要分享的链接

imgUrl:

  • 类型:字符串
  • 描述:(可选项)在帖子中显示的缩略图的网址,本参数在iOS端已废弃

description:

  • 类型:字符串
  • 描述:(可选项)内容的描述,通常为 2-4 个句子,本参数在iOS端已废弃

title:

  • 类型:字符串
  • 描述:(可选项)表示链接中的内容的标题,本参数在iOS端已废弃

quote:

  • 类型:字符串
  • 描述:(可选项)引用

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔类型;是否分享成功
  3. results: {} //JSON 对象;分享成功后的结果
  4. }
  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: -1, //数字类型;错误码,取值范围如下:
  3. // -1:未知错误
  4. // -100:用户取消分享
  5. msg: '' //字符串类型;错误信息
  6. }

示例代码

  1. var facebook = api.require('facebook');
  2. facebook.shareLinked({
  3. url: 'http://www.apicloud.com/index?uzchannel=6',
  4. imgUrl: 'http://p6.sinaimg.cn/2823006341/180/51101340154713',
  5. description: 'app 跨平台开发工具',
  6. title: 'APICloud',
  7. quote: 'very good'
  8. }, function(ret, err){
  9. if(ret.status) {
  10. api.alert({msg:JSON.stringify(ret)});
  11. } else {
  12. api.alert({msg:JSON.stringify(err)});
  13. }
  14. });

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

shareImage

向 facebook 分享本地图片,照片大小必须小于 12MB

shareImage({params}, callback(ret, err))

params

path:

  • 类型:字符串
  • 描述:要分享的图片地址

caption:

  • 类型:字符串
  • 描述:图片的标题

ret:

  • 类型:JSON 对象
  • 内部字段:

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: -1, //数字类型;错误码,取值范围如下:
  3. // -1:未知错误
  4. // -100:用户取消分享
  5. msg: '' //字符串类型;错误信息
  6. }

示例代码

  1. var facebook = api.require('facebook');
  2. facebook.shareImage({
  3. path: 'widget://res/aqzx_logo_select.png',
  4. caption: 'app 跨平台开发工具'
  5. }, function(ret, err){
  6. if(ret.status) {
  7. api.alert({msg:JSON.stringify(ret)});
  8. } else {
  9. api.alert({msg:JSON.stringify(err)});
  10. }
  11. });

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

shareVideo

向 facebook 分享本地视频,视频大小必须小于 12MB

shareVideo({params}, callback(ret, err))

params

image:

  • 类型:JSON 对象
  • 描述:分享的视频的预览图信息
  • 内部字段:
  1. {
  2. path: '', //字符串类型;预览图路径
  3. caption: '' //字符串类型;预览图说明
  4. }

url:

  • 类型:字符串
  • 描述:要分享的视频地址,注意:在 iOS 平台上必须是系统相册路径(UIMediaScanner获取的视频地址路径,不可用transPath转换)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔类型;是否分享成功
  3. results: {} //JSON 对象;分享成功后的结果
  4. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. code: -1, //数字类型;错误码,取值范围如下:
  2. // -1:未知错误
  3. // -100:用户取消分享
  4. msg: '' //字符串类型;错误信息
  5. }

示例代码

  1. var UIMediaScanner = api.require('UIMediaScanner');
  2. UIMediaScanner.open({
  3. type: 'all',
  4. column: 4,
  5. classify: true,
  6. max: 14,
  7. sort: {
  8. key: 'time',
  9. order: 'desc'
  10. },
  11. texts: {
  12. stateText: '已选择*项',
  13. cancelText: '取消',
  14. finishText: '完成'
  15. },
  16. styles: {
  17. bg: '#fff',
  18. mark: {
  19. icon: 'widget://res/baiduPin1.png',
  20. position: 'bottom_left',
  21. size: 20
  22. },
  23. nav: {
  24. bg: '#eee',
  25. stateColor: '#000',
  26. stateSize: 18,
  27. cancelColor: '#000',
  28. cancelSize: 18,
  29. finishBg: 'rgba(0,0,0,0)',
  30. finishColor: '#000',
  31. finishSize: 18
  32. }
  33. }
  34. }, function(ret) {
  35. if (ret) {
  36. var video = ret.list[0];
  37. var facebook = api.require('facebook');
  38. facebook.shareVideo({
  39. url:video.path,
  40. image: {
  41. path: 'widget://res/aqzx_logo_select.png',
  42. caption: 'app 跨平台开发工具'
  43. }
  44. }, function(ret, err){
  45. if(ret.status) {
  46. api.alert({msg:JSON.stringify(ret)});
  47. } else {
  48. api.alert({msg:JSON.stringify(err)});
  49. }
  50. });
  51. }
  52. });

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

shareMedia

向 facebook 分享多媒体

注意:

每个照片和视频元素的大小必须小于 12MB。

用户每次可以分享最多包含 30 个照片和视频元素的内容。

shareMedia({params}, callback(ret, err))

params

images:

  • 类型:JSON 数组
  • 描述:分享的图片信息组成的数组
  • 内部字段:
  1. [{
  2. path: '', //字符串类型;预览图路径
  3. caption: '' //字符串类型;预览图说明
  4. }]

videoUrls:

  • 类型:JSON 数组
  • 描述:要分享的视频地址组成的数组,注意:在 iOS 平台上必须是系统相册路径(UIMediaScanner获取的视频地址路径,不可用transPath转换)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: true, //布尔类型;是否分享成功
  3. results: {} //JSON 对象;分享成功后的结果
  4. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. code: -1, //数字类型;错误码,取值范围如下:
  3. // -1:未知错误
  4. // -100:用户取消分享
  5. msg: '' //字符串类型;错误信息
  6. }

示例代码

  1. var UIMediaScanner = api.require('UIMediaScanner');
  2. UIMediaScanner.open({
  3. type: 'all',
  4. column: 4,
  5. classify: true,
  6. max: 14,
  7. sort: {
  8. key: 'time',
  9. order: 'desc'
  10. },
  11. texts: {
  12. stateText: '已选择*项',
  13. cancelText: '取消',
  14. finishText: '完成'
  15. },
  16. styles: {
  17. bg: '#fff',
  18. mark: {
  19. icon: 'widget://res/baiduPin1.png',
  20. position: 'bottom_left',
  21. size: 20
  22. },
  23. nav: {
  24. bg: '#eee',
  25. stateColor: '#000',
  26. stateSize: 18,
  27. cancelBg: 'rgba(0,0,0,0)',
  28. cancelColor: '#000',
  29. cancelSize: 18,
  30. finishBg: 'rgba(0,0,0,0)',
  31. finishColor: '#000',
  32. finishSize: 18
  33. }
  34. }
  35. }, function(ret) {
  36. if (ret) {
  37. var video = ret.list[0];
  38. var img = ret.list[1];
  39. UIMediaScanner.transPath({
  40. path: img.path
  41. }, function(ret, err) {
  42. if (ret) {
  43. var facebook = api.require('facebook');
  44. facebook.shareMedia({
  45. videoUrls:[video.path],
  46. images: [{
  47. path: ret.path,
  48. caption: 'app 跨平台开发工具'
  49. }]
  50. }, function(ret, err){
  51. if(ret.status) {
  52. api.alert({msg:JSON.stringify(ret)});
  53. } else {
  54. api.alert({msg:JSON.stringify(err)});
  55. }
  56. });
  57. } else {
  58. alert(JSON.stringify(err));
  59. }
  60. });
  61. }
  62. });

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

addEvent

添加自定义事件,用于统计分析事件

addEvent(params)

params

eventName

  • 类型:字符串
  • 描述:(必选项)事件名称
  1. facebook.addEvent({eventName:'APICloud'});

可用性

Android系统、iOS系统