你现在的位置:首页 > PHP开发 > facebook开发

facebook开发与服务

PHP网站建设工作室提供基于facebook api的开发等服务,竭诚为朋友们服务。

facebook通过API的方式开放一些应用接口,可以使用facebook api来做facebook二次开发。

 

facebook开发简介

如果想通过Facebook登录到你的网站,Facebook站外API可以实现你想要的,如下介绍实际使用.
注册Facebook Key http://www.facebook.com/developers/apps.php 注册后可以得到
App ID,API Key,App Secret (如果你想测试,必须要一个域名,申请的时候填上)

到https://github.com/facebook/php-sdk/下载PHP开发包
进入examples/页面,里面有个示例文件,
$facebook = new Facebook(array(
'appId'  => '',//你的App ID
'secret' => '',//你的App Secret
'cookie' => true,
));
修改如上
如果你本地的服务器无法验证FACEBOOK的SSL验证,请修改facebook class 的方法makeRequest
在curl_init()之后添加:
$opts[CURLOPT_SSL_VERIFYPEER] = false;  
$opts[CURLOPT_SSL_VERIFYHOST] = 2;  
上面的API支持FACEBOOK新旧两种格式,
通过调用api传不同的参数实现
1.路径型,如:/me
还有具体的参数可以参考:http://developers.facebook.com/docs/reference/api/ 页面
在右边objects下面,每个点击进去之后都有非常多的参数
2.数组型,如array(“method”=>”links.get”)
数组型是为兼容旧的API而保留的,建议用新的.旧的所有功能基本上新的都有,具体参数可以参考:getApiUrl 方法
如果你使用 /me 你会发现你取不到自己的邮箱地址,是因为你没权限,在http://developers.facebook.com/docs/reference/api/user/
你会发现有很多东西是要得到用户的授权才可以访问的,以下是具体的授权方式:
https://graph.facebook.com/oauth/authorize?client_id=171908639493418&redirect_uri=you url address&scope=read_mailbox,email
你也可以自己来往facebook里添加生成上述地址的方法,这里不介绍了
可以得到授权,你就可以往facebook推送消息了
$dat=array(
"picture"=>"image",
"subject"=>"你好啊~",
"message"=>"呵呵,测试FACEBOOKAPI~,这个是测试信息",
);
$f = $facebook->api('/me/friends');
foreach($f['data'] as $v){
$f = $facebook->api('/'.$v['id'].'/feed',"POST",$dat);//$f是返回你发送的消息的ID,消息只能发送到公开的版面,比如消息墙
}
通过不同的$dat参数来实现不同的消息,具体你就参考上面的API参数解释的地址吧
还有一个问题,加入一个用户登录了你的网站后立即跑到facebook去把他刚才的授权给取消掉,你去取他的信息的时候就出错误了,
facebook也为这个情况提供了一个解决办法,请参考:http://developers.facebook.com/docs/reference/api/subscription/
就是让你的应用程序就订阅用户的状态,但用户使用了你的应用程序之后对你的在facebook上的应用进行有关操作的时候,facebook会发消息提示你
想使用这个功能,你得先到你的网站建立一个回调验证程序,FACEBOOK也为你提供了,可以在http://github.com/facebook/real-time/blob/master/samples/ 下载得到
把里面的 callback.php 放到你的站点目录,这个文件用于验证应用程序是你的外还用于得到用户的活动消息,
下面是如何添加订阅,查询订阅,删除订阅的代码,(更改就是发送添加订阅,存在的话会覆盖掉以前的)
$acc=file_get_contents("https://graph.facebook.com/oauth/access_token?client_id=you app id&client_secret=you app secret&grant_type=client_credentials");
$t=explode("=",$acc);
$dat=array(
"object"=>"user",
"fields"=>"feed,friends,activities,interests,music,books,movies,television,likes,checkins",//就支持这些
"callback_url"=>"",//刚刚那个callback.php 
"verify_token"=>"abc",//你的callback.php里的那个token,自己看下或自己修改
"access_token"=>$t[1]
);
$f = $facebook->api('/appid/subscriptions',"POST",$dat);//添加
print_r($f);//啥也没返回
$dat=array(
"access_token"=>$t[1]
);
$f = $facebook->api('/appid/subscriptions',"GET",$dat);//查询
print_r($f);//很多关于你订阅的东东
$param = array('access_token' => $t[1]);
$subs = $facebook->api('/appid/subscriptions', 'DELETE', $param); //干掉了
添加后如果别人移除了他使用你的应用程序,会得到一个消息,大约如下:
Array
(
[fb_sig_uninstall] => 1//YOU APP UNINSTALL
[fb_sig_locale] => en_US
[fb_sig_in_new_facebook] => 1
[fb_sig_time] => 1293444384.8939
[fb_sig_added] => 0
[fb_sig_user] => 100001008942959
[fb_sig_country] => us
[fb_sig_api_key] => appkey
[fb_sig_app_id] => appid
[fb_sig] => 383d629e8eeac39022adbc1d158f6065
)
新版的API把crt证书移除了,但我这里还有保留,需要的下载
这样就可以实现facebook ssl 验证了,而不用设置
$opts[CURLOPT_SSL_VERIFYPEER] = false;  
$opts[CURLOPT_SSL_VERIFYHOST] = 2;  
不过要修改:
public static $CURL_OPTS = array(
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT        => 60,
CURLOPT_USERAGENT      => 'facebook-php-2.0',
);

public static $CURL_OPTS = array(
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT        => 60,
CURLOPT_USERAGENT      => 'facebook-php-2.0',
CURLOPT_CAINFO      => '/home/lonely/public_html/fb_ca_chain_bundle.crt',//你的地址
);
搞定~
错误:
200 The user hasn’t authorized the application to perform this action 用户没有权限
210 User not visible 用户无效
开发完毕,记得进入FACEBOOK的应用程序页面,吧沙盒模式关闭,否则用户没法登陆的

1. 简介

2. 数据处理

3. OAuth授权

4. Graph API

5. Facebook API

5.1. FQL(Facebook Query Language)

5.2. Permission

5.3. Batch API(批次)

5.4. Event

5.5. News Feed(动态汇总)

5.6. Notes

5.7. User Management

5.8. Messaging

5.9. Chat

总结

1. 简介
    Facebook 是一个社交网络服务网站,于 2004 年 2 月 4 日上线,到 2010 年 2 月 2 日, Facebook 正赶超雅虎将成为全球第三大网站,与微软谷歌领衔前三。Facebook 一个月内增加的新用户量相当于雅虎一年所增加的用户量,当前的注册用户为7亿,这些用户中有一半的人每天都会访问网站。许多品牌都在 Facebook 上创建了企业账户,收集用户对产品的的评论反馈信息,及时对自己的产品和品牌做出调整,抢占市场先机。目前市场上有很多优秀的舆情智能分析工具,可以海量分析网络上各种媒体介质的信息,通过数据挖掘技术分析出用户的喜好和潜在的购买行为。

2. 数据处理
   如果采用Java开发, Facebook服务器返回的数据格式为JSON, 开发者可通过 www.json.org上公布的多种Java下的JSON工具, 进行JSON到Java的数据转换。

3. OAuth授权
  Facebook现在采用的是OAuth2.0授权, 用户登录的授权流程分为两种:服务端授权与客户端授权。客户端授权用于在通过客户端访问Graph API 如手机或桌面应用。OAuth 2.0分为三步:用户认证, APP 授权,APP认证,在这三步完成之后,APP获得用户的Access Token,即可代表用户访问。对于桌面应用,可以在创建应用时的Web Site输入https:\\www.facebook.com,在申请access token时

https://www.facebook.com/dialog/oauthclient_id=189101711139322&redirect_uri=https://www.facebook.com/connect/login_success.html&scope=email,read_stream,publish_stream&response_type=token,
浏览器https://www.facebook.com/connect/login_success.html#access_token=189101711139322%7C2.AQA480ryCE_tSLvi.86400.1307602800.4-100002437167558%7CaL9PjeXSIoDTidqrup-4OXpkXRc&expires_in=87229
可以得到access token。

对于Server,首先获取authorization code

https://www.facebook.com/dialog/oauthclient_id=189101711139322&redirect_uri=https://www.facebook.com/connect/login_success.html&scope=email,read_stream

在用户授权后,浏览器地址栏:

https://www.facebook.com/connect/login_success.htmlcode=ZqX7KyDxtd-8YXNeGjdroi2rOUY20-A1ceMa7mMv4i8.eyJpdiI6Ik1wejlmWWduWTB6N214d1lBeDlpOFEifQ.bXgkoNrGLLp9X_n9-IZHp6t8CXohmjbmVLQURb-nn46ik59J0gTFsZp_nbxtd3acAQnI4XWn6xhwaIVbE5XW3Az9ff8ZxO15jp4MmZ_WSNra_IsmS0U_KyWPysUfYUC9

获得authorization code, 向Graph API申请access token。

https://graph.facebook.com/oauth/access_tokenclient_id=189101711139322&redirect_uri=https://www.facebook.com/connect/login_success.html&client_secret=9e9cd24ecb4ae7c85e5c1eba44b77a03&code=ZqX7KyDxtd-8YXNeGjdroi2rOUY20-A1ceMa7mMv4i8.eyJpdiI6Ik1wejlmWWduWTB6N214d1lBeDlpOFEifQ.bXgkoNrGLLp9X_n9-IZHp6t8CXohmjbmVLQURb-nn46ik59J0gTFsZp_nbxtd3acAQnI4XWn6xhwaIVbE5XW3Az9ff8ZxO15jp4MmZ_WSNra_IsmS0U_KyWPysUfYUC9,

获得access token

access_token=189101711139322|c8da3ff9a341d7b2bb4aa433.4-100002437167558|ELwhTyykjfxLfHXiuXFyP7uDtqk。
 

4. Graph API
   Facebook的核心是人与人之间的社会关系,人与所关心的事物的联系。Facebook API从以前的REST API,到现在的Graph API也体现了这种变化,着重表述各个对象之间的关系。Facebook不提供对外的开放Java API接口,只是提供输入参数及输出结果的说明,需开发者自行开发,有开源的API接口,如facebook-java-api, restfb,但现在都不是很完整。Facebook提供的接口都以Web应用为主,桌面应用的开发接口需用户自行开发或采用开源接口。

5. Facebook API
5.1. FQL(Facebook Query Language)

应用程序可以通过SQL-Like的语法去Facebook获取想要的数据,许多Facebook API内部也大量的使用FQL,使用FQL获取数据可以更有效率。通过FQL API开发者可以发出单一FQL查询或是相依FQL查询。数据表可参考: http://developers.facebook.com/docs/reference/fql/。

5.2. Permission

   应用程序在访问用户的各项信息时,需获得用户的授权,在取得了用户的授权后,才可以访问相应的信息,或发布信息等。用户可查看在当前应用的权限,以及与可得到的权限。

具体可参考:http://developers.facebook.com/docs/authentication/permissions/。

5.3. Batch API(批次)

Facebook App存放的地方不是在Facebook的Server群之中,而是在开发者自己的远程Host上,所以App与Facebook API之间的沟通需远程API调用来进行,就造成了App运作的最大瓶颈所在, 所以提供了批次API,可以让开发者一次最多将20个API调用打包成一次Http Request,并可设定是循环的或是并列的方式运行。

5.4. Event

允许应用程序以用户的身份去建立拥有RSVP功能的事件,管理事件专属的媒体,事件输出功能。

5.5. News Feed(动态汇总)

用户与好友的消息发布的都可以显示在当前页面。用户如果想阅读或发布消息,需在申请授权时添加read_stream, publish_stream。

5.6. Notes

   Notes就是用户位于Facebook上的blog,应用程序 可发布、编辑Facebook上的Notes。

5.7. User Management

  可取得朋友列表,用户的信息及检查用户是否授权某些应用程序等。

5.8. Messaging

文本框: query = "SELECT thread_id, subject, message_count FROM thread WHERE folder_id=1";  query = "SELECT message_id, body, author_id FROM message WHERE thread_id=10150267510038064";  可以给好友发送站内信息,类似于私信。Facebook正在对私信的接口升级,现阶段开发者只能自己采用FQL来查询。如查询发出的信息:

5.9 Paging

    Pages以前是粉丝专区,现在看起来象是一般的使用者Profile,可以知道目前登入的使用者是否是该Page的管理者,以及该Page加入了哪些应用程序 。

5.10. Chat

   好友之间可以聊天。

       特性

   采用 Facebook平台的X-FACEBOOK-PLATFORM SASL方式认证

   输入用户名/密码的DIGEST-MD5方式认证

   可发送与接收文字信息

   可设置用户状态

   可设置用户空闲时的信息

   可接收vCard

   可获取好友的照片

       限制

   不可发送/接收Html信息

   不能采用标准XMPP方式创建/删除好友

   用户的JID与Jabber ID不同

   在客户端之间不能随意发送IQ节点

    Facebook聊天服务器可以与XMPP Client端通信,但它不是XMPP Server。与传统的XMPP服务还是有很大的区别。