Facebook应用开发小结
一、申请应用
首先需要申请一个应用,在https://developers.facebook.com/
点击“创建应用”后弹出上图。
App Name:将来从这个应用出来的所有信息,都会呈现一个“来自于{App Nmae}” 如图:
App Namespace:以后可以通过这个名字访问你的应用 http://apps.facebook.com/{App Namespace} Web Hosting:一个选择让facebook的一个合作伙伴Heroku(其实我也不知道这个Heroku和facebook什么关系)给你一个空间,可以将应用放到上面,类似新浪的SAE。我没有用他的,因为这个地方的代码还是要翻墙才可以使用,所以??
“继续”然后输入验证码申请成功。如果你想用一个小号来创建应用有可能跳回填App Name的层,并提示不是一个真实的用户之类的。申请应用的用户需
1
要这样的条件:创建应用的该用户需要有5个完整好友用户或者10个活跃月的好友用户。
会有一个App ID和App Secret,会成为你以后的调用API的参数。
Facebook应用分几类如下如,所以创建应用后需要确定你的应用的类型。我的应用是第一类。其中的Site URL是授权成功后的跳转的页面。有些地址不可用,需要尝试。
2
左侧导航有个App Details中需要填写完成,提交,然后才能使用。 其中所有的图标都必须按照他的要求尺寸来。
有一个关键的项,Privacy Policy URL,这个需要提供一个网页,这个网页最好是有备案的。或者上网搜一个有说明自己的应用的干什么的,需要用到授权用户的什么信息的html网页。
然后提交,出现下面的页面就是成功了。
二、API调用
1.API分类
facebook的API分为三类:Graph API,FQL,Legacy REST Graph API:有SDK可以用,还提供了一个可视化的测试工具 (https://developers.facebook.com/tools/explorer),我用的就是这个。 FQL:想SQL语句一样调用的接口,也有一个可视化工具 (https://developers.facebook.com/tools/explorer)。 Legacy REST:传统的API,具体的调用真没了解。
2. 部分Graph API使用说明
①授权
最关键的部分,facebook采用OAuth V2.0授权。。 浏览器vpn连结的情况下键入网址
3
https://www.facebook.com/dialog/oauth?response_type=token&display=popup&client_id={App ID}&redirect_uri={Site URL(必须和填写的应用信息中的Site URL相一致)}&scope={需要的权限,多个以英文逗号隔开}
其中的所有参数值需要urlencode处理下。 例:
https://www.facebook.com/dialog/oauth?response_type=token
&display=popup&client_id=479032302163288&redirect_uri=http://www.masalili.com.tw&scope=email
https://www.facebook.com/dialog/oauth?response_type=token&display=popup&client_id=523509020905851&redirect_uri=https://developers.facebook.com/tools/explorer/callback&scope=email,publish_actions
申请的是email和public_actions权限。
然后需要你用facebook账号登陆,然后允许这个应用获取你的这两个权限中的信息。
然后跳转到你的你的Site URL,这时他的跳转地址中带有了access_token参数。如:
http://abc.sina.com/a.html#access_token={token}&expires_in={有效时间}
由于它是用#分割的,所以我跳到一个html文件,然后用js处理获取这个参数:
Window.location.hash就可以拿到#后面的字符串,然后你处理出access_token参数,在作为新的url参数跳到一个php文件:
window.location.href=\
这样在这个php文件就可以使用$_REQUEST['token']获取access_token做后续操作了。
其中的expires_in是个有效时间,单位秒。一般是一个多小时。和明显不够用。至于每个access_token可以用多久可以到这里看到
https://developers.facebook.com/tools/debug,输入你获得token就可以看到了。
接着使用这个时间很短的token获取一个长效token,一般是60天。
$facebook=new Facebook(array('appId' =>{App ID},'secret' => {App Secret})); $facebook->setAccessToken({short_live_access_token});
$long_live_access_token=$facebook->setExtendedAccessToken(); 这样这个token就可以用60天了。
至于在官方文档中提到的授权时授offline_access权限就可以长久有效的token,我没有试出来,有这个权限与没有这个权限不影响我得到的token的时间。 ②发布涂鸦墙信息
$facebook=new Facebook(array('appId' =>{App ID},'secret' => {App Secret})); $facebook->setAccessToken($access_token); $attachment = array( 'message' => $message);
4
$result=$facebook->api('/'.{ID}.'/feed/',\这个ID可以使以个人的facebook ID,也可以是你有管理员权限的专页的ID,不过想在你有管理权限的专页上发东西需要授权的manage_pages权限。
③发布照片到涂鸦墙相册
$facebook=new Facebook(array('appId' =>{App ID},'secret' => {App Secret})); $attachment=array('access_token'=>$access_token); /*one*/
$account_array=$facebook->api(\/*two*/
foreach($account_array['data'] as $value) {
if($value['id']=={专页ID}) { $fb_qyer_admin=$value['access_token'];
} }
$attachment = array ( 'access_token' =>$fb_qyer_admin, 'message' => {message}, 'url' =>{images的完整url(不可以是本地的盘符地址)} ); /*three*/
//$facebook->setFileUploadSupport(true); $url='/'.{相册ID}.'/photos/'; /*fore*/
$result=$facebook->api($url,\
解释:
①facebook是一个空间类型的SNS,他有feed流中有图片的,但是那并不是像微博那样的带图微博,而是你上传了一张图片到自己的相册或者专页的相册,在feed中被当做一个更新status出现。所以带图的文字其实是配了说明的图片,只是feed中显示的方式不相同罢了。如果上传到普通相册就是就是说“XX上传了照片到YY相册”;如果上传到“涂鸦墙相册”就会是文字下面更图片,就像带图的微博一样。
②one:如果向专页分享需要先获取该用户相对应的专页的token。
/me/accounts接口会显示该用户所管理的所有专页和应用的详细内容包括id,name,access_token等,使用这个token对专页的相册进行操作。
③two:由于他返回的所有专页的信息顺序可能不一定,及这次A专页是第一个,B是第二个,但有可能下次在调用的时候就换了位置,所以我第一次直接写死要第几个的access_token结果有时候就是错的。所以这里去遍历判断,找出想要的那个专页的token。
④three:这行被我注释掉了,我也没明白这个的作用,加上与否没有影响,
5
跟踪了API发现最终通过curl发出的请求没有什么不同。看看大家又没什么发现。
⑤fore:在这了我写成上面那样,var_dump($result);就什么都不输出,甚至连个null都没有。但是写成:
var_dump($facebook->api($url,\或者
return $facebook->api($url,\
就可以拿到值。找到原因,应该是php的不了解,还望大虾指点。
成功的返回一个数组:
{\这条记录的ID(可以通过www.facebook.com/ID访问该条记录)},\形式是“数字_数字”的形式(也可以像上面的方式访问)}} ④获取likes和commentary
$result=$facebook->api(\记录ID}.\所有的查询类接口都有limit参数,显示返回条数。
$result['likes']['data']和$result['comments']['data']即为赞的信息和评论的信息。
6
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库Facebook应用开发指南(中文)在线全文阅读。
相关推荐: