facebook

来自于:APICloud立即使用

概述

facebook SDK 概述

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

配置 config.xml 文件:

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

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

      ```js
      <feature name="facebook">
          <param name="urlScheme" value="fb561665727361237" />
          <param name="appId" value="561665727361237" />
      </feature>
      ```
    
  • 字段描述:

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

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

针对 android 平台配置方法:

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

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


注意:

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

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

详情参考 APICloud 官方文档之-----白名单配置

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

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

模块接口

isInstalled

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

  <preference name="querySchemes" value="fb" />

isInstalled(callback(ret, err))

callback(ret, err)

ret:

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

err:

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

示例代码

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

可用性

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)

ret:

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

err:

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

示例代码

    var facebook = api.require('facebook');
    facebook.login({
      appId: '',
      permissions:
    },function(ret, err){
         if(ret.status) {
           api.alert({msg:JSON.stringify(ret)});
         } else {
            api.alert({msg:JSON.stringify(err)});
         }
   });

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

logout

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

logout()

示例代码

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

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

getUserInfo

获取用户信息

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

params

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,                 //布尔类型;是否成功返回
    result: {                     //JSON 对象;返回的用户信息,本参数内容随不同情况而变动,具体参考实际返回值
        birthday : "05/24/1988",  //
        first_name: "\U4e91\U5e06",//
        friends: {                    //
            data: ( ),    
            summary: {
                "total_count" = 18,
            }
        },
        id: 246810649072103,
        last_name: "\U5b59",
        link: "https://www.facebook.com/app_scoped_user_id/246810649072103/",
        name:"\U5b59\U4e91\U5e06",
        picture: {
            data: {
                is_silhouette: 0,
                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 代替后方可访问该图片
            }
        }
    }
}

err:

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

示例代码

    var facebook = api.require('facebook');
    facebook.getUserInfo(function(ret, err){
     if(ret.status) {
       api.alert({msg:JSON.stringify(ret)});
     } else {
        api.alert({msg:JSON.stringify(err)});
     }
   });

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

getCurrentToken

获取当前 app 内的 token

getCurrentToken(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    isLogin: true,       //布尔类型;是否已登录,若为 false 则以下参数均为 undefined
    token: "",           //字符串类型;返回 token
    userId:'',           //字符串类型;返回用户 ID
    refreshDate:'',      //字符串类型;返回 token 最新刷新时间,格式:yyyy-MM-dd HH:mm:ss
    expirationDate:'',   //字符串类型;返回 token 过期时间,格式:yyyy-MM-dd HH:mm:ss
    appId:'',            //字符串类型;返回 appID
    permissions:''       //JSON 数组;返回用户授予的权限,如:user_birthday,email,user_likes,public_profile
}

示例代码

    var facebook = api.require('facebook');
    facebook.getCurrentToken(function(ret){
         if(ret.isLogin) {
           api.alert({msg:JSON.stringify(ret)});
         } else {
           alert('尚未登录');
         }
   });

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

refreshToken

刷新当前 app 内的 token

refreshToken(callback(ret))

callback(ret,err)

ret:

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

err:

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

示例代码

    var facebook = api.require('facebook');
    facebook.refreshToken(function(ret){
         if(ret.status) {
           api.alert({msg:'刷新成功'});
         } else {
           alert('刷新失败');
         }
   });

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

shareLinked

向 facebook 分享链接

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

params

url:

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

imgUrl:

  • 类型:字符串
  • 描述:(可选项)在帖子中显示的缩略图的网址

description:

  • 类型:字符串
  • 描述:(可选项)内容的描述,通常为 2-4 个句子

title:

  • 类型:字符串
  • 描述:(可选项)表示链接中的内容的标题

quote:

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

callback(ret, err)

ret:

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

err:

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

示例代码

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

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

shareImage

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

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

params

path:

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

caption:

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

callback(ret, err)

ret:

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

err:

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

示例代码

    var facebook = api.require('facebook');
    facebook.shareImage({
        path: 'widget://res/aqzx_logo_select.png',
        caption: 'app 跨平台开发工具'
    }, function(ret, err){
         if(ret.status) {
           api.alert({msg:JSON.stringify(ret)});
         } else {
            api.alert({msg:JSON.stringify(err)});
         }
   });

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

shareVideo

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

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

params

image:

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

url:

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

callback(ret, err)

ret:

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

err:

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

示例代码

var UIMediaScanner = api.require('UIMediaScanner');
UIMediaScanner.open({
    type: 'all',
    column: 4,
    classify: true,
    max: 14,
    sort: {
        key: 'time',
        order: 'desc'
    },
    texts: {
        stateText: '已选择*项',
        cancelText: '取消',
        finishText: '完成'
    },
    styles: {
        bg: '#fff',
        mark: {
            icon: 'widget://res/baiduPin1.png',
            position: 'bottom_left',
            size: 20
        },
        nav: {
            bg: '#eee',
            stateColor: '#000',
            stateSize: 18,
            cancelBg: 'rgba(0,0,0,0)',
            cancelColor: '#000',
            cancelSize: 18,
            finishBg: 'rgba(0,0,0,0)',
            finishColor: '#000',
            finishSize: 18
        }
    }
}, function(ret) {
    if (ret) {
        var video = ret.list[0];

        var facebook = api.require('facebook');
        facebook.shareVideo({
           url:video.path,
           image: {
                path: 'widget://res/aqzx_logo_select.png',
                caption: 'app 跨平台开发工具'
           }
        }, function(ret, err){
             if(ret.status) {
               api.alert({msg:JSON.stringify(ret)});
             } else {
                api.alert({msg:JSON.stringify(err)});
             }
       });
    }
});

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本

shareMedia

向 facebook 分享多媒体

注意:

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

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

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

params

images:

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

videoUrls:

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

callback(ret, err)

ret:

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

err:

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

示例代码

var UIMediaScanner = api.require('UIMediaScanner');
UIMediaScanner.open({
    type: 'all',
    column: 4,
    classify: true,
    max: 14,
    sort: {
        key: 'time',
        order: 'desc'
    },
    texts: {
        stateText: '已选择*项',
        cancelText: '取消',
        finishText: '完成'
    },
    styles: {
        bg: '#fff',
        mark: {
            icon: 'widget://res/baiduPin1.png',
            position: 'bottom_left',
            size: 20
        },
        nav: {
            bg: '#eee',
            stateColor: '#000',
            stateSize: 18,
            cancelBg: 'rgba(0,0,0,0)',
            cancelColor: '#000',
            cancelSize: 18,
            finishBg: 'rgba(0,0,0,0)',
            finishColor: '#000',
            finishSize: 18
        }
    }
}, function(ret) {
    if (ret) {
        var video = ret.list[0];
        var img = ret.list[1];
        UIMediaScanner.transPath({
            path: img.path
        }, function(ret, err) {
            if (ret) {
                var facebook = api.require('facebook');
                facebook.shareMedia({
                   videoUrls:[video.path],
                   images: [{
                        path: ret.path,
                        caption: 'app 跨平台开发工具'
                   }]
                }, function(ret, err){
                     if(ret.status) {
                       api.alert({msg:JSON.stringify(ret)});
                     } else {
                        api.alert({msg:JSON.stringify(err)});
                     }
               });
            } else {
                alert(JSON.stringify(err));
            }
        });
    }
});

可用性

Android系统、iOS系统

可提供的1.0.0及更高版本