来自于:APICloud立即使用
isInstalled login logout getUserInfo getCurrentToken refreshToken shareLinked shareImage shareVideo shareMedia addEvent
概述
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, iOS 平台上必须制作 Info.plist 文件,然后放到res资源文件夹下。配置内容如下:
<?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>FacebookAppID</key>
<string>748801072229448</string>
<key>FacebookDisplayName</key>
<string>FacebookDisplayName</string>
</dict>
</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 平台上必须添加白名单
<preference name="querySchemes" value="fb,fbapi,fb-messenger-api,fbauth2,fbshareextension" />
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
parameters:
- 类型:JSON对象
- 描述:(可选项)请求权限,不传则取默认值。
- 内部字段:
{
fields: //字符串类型;权限范围;默认:'id, name, link, first_name, last_name, email, birthday, picture.type(large), friends, hometown, friendlists, location'
}
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:
- 类型:字符串
- 描述:(可选项)在帖子中显示的缩略图的网址,本参数在iOS端已废弃
description:
- 类型:字符串
- 描述:(可选项)内容的描述,通常为 2-4 个句子,本参数在iOS端已废弃
title:
- 类型:字符串
- 描述:(可选项)表示链接中的内容的标题,本参数在iOS端已废弃
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及更高版本
addEvent
添加自定义事件,用于统计分析事件
addEvent(params)
params
eventName
- 类型:字符串
- 描述:(必选项)事件名称
示例代码
var facebook = api.require('facebook');
facebook.addEvent({eventName:'APICloud'});
可用性
Android系统、iOS系统
可提供的1.0.0及更高版本