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" />
详情参考 YonBuilder移动开发 官方文档之-----白名单配置
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 改为自己的。
详情参考 YonBuilder移动开发 文档之-----plist文件配置
3,Android facebook 开发平台上的默认活动类名请填写:com.uzmap.pkg.EntranceActivity
4,Android 常见错误://community.yonyou.com/bbs/forum.php?mod=viewthread&tid=66770&page=1&extra=#pid378595
5,android从1.0.2版本开始需要升级环境编译
注意:iOS端最低适配版本是iOS 8.0
初始化sdk
init(callback)
var facebook = api.require('facebook');
facebook.init();
Android 系统
可提供的1.0.0及更高版本
判断当前设备是否安装facebook客户端 注意: iOS 平台上必须添加白名单
<preference name="querySchemes" value="fb,fbapi,fb-messenger-api,fbauth2,fbshareextension" />
isInstalled(callback(ret, err))
ret:
{
installed: true //布尔型;true||false,当前设备是否安装facebook客户端
}
err:
{
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及更高版本
Facebook 登录授权
login({params}, callback(ret, err))
appId:
permissions:
ret:
{
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:
{
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及更高版本
应用登出,插件会清空当前 app 内保存的 token 等信息
logout()
var facebook = api.require('facebook');
facebook.logout();
Android系统、iOS系统
可提供的1.0.0及更高版本
获取用户信息
getUserInfo({params}, callback(ret, err))
parameters:
{
fields: //字符串类型;权限范围;默认:'id, name, link, first_name, last_name, email, birthday, picture.type(large), friends, hometown, friendlists, location'
}
ret:
{
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:
{
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及更高版本
获取当前 app 内的 token
getCurrentToken(callback(ret))
ret:
{
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及更高版本
刷新当前 app 内的 token
refreshToken(callback(ret))
ret:
{
status: true //布尔类型;是否刷新成功
}
err:
{
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及更高版本
向 facebook 分享链接
shareLinked({params}, callback(ret, err))
url:
imgUrl:
description:
title:
quote:
ret:
{
status: true, //布尔类型;是否分享成功
results: {} //JSON 对象;分享成功后的结果
}
err:
{
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: 'YonBuilder移动开发',
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及更高版本
向 facebook 分享本地图片,照片大小必须小于 12MB
shareImage({params}, callback(ret, err))
path:
caption:
ret:
{
status: true, //布尔类型;是否分享成功
results: {} //JSON 对象;分享成功后的结果
}
err:
{
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及更高版本
向 facebook 分享本地视频,视频大小必须小于 12MB
shareVideo({params}, callback(ret, err))
image:
{
path: '', //字符串类型;预览图路径
caption: '' //字符串类型;预览图说明
}
url:
ret:
{
status: true, //布尔类型;是否分享成功
results: {} //JSON 对象;分享成功后的结果
}
err:
{
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及更高版本
向 facebook 分享多媒体
注意:
每个照片和视频元素的大小必须小于 12MB。
用户每次可以分享最多包含 30 个照片和视频元素的内容。
shareMedia({params}, callback(ret, err))
images:
[{
path: '', //字符串类型;预览图路径
caption: '' //字符串类型;预览图说明
}]
videoUrls:
ret:
{
status: true, //布尔类型;是否分享成功
results: {} //JSON 对象;分享成功后的结果
}
err:
{
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 {
api.alert({msg: JSON.stringify(err)});
}
});
}
});
Android系统、iOS系统
可提供的1.0.0及更高版本
添加自定义事件,用于统计分析事件
addEvent(params)
eventName
var facebook = api.require('facebook');
facebook.addEvent({eventName:'YonBuilder移动开发'});
Android系统、iOS系统
可提供的1.0.0及更高版本