Facebook应用开发新手入门指南


2010-9-25 18:37 IT技术 24个评论2857

前言

老美一直在引领着技术的潮流,就拿开放这事来说吧,也是从Google玩到Facebook再到Twitter,三家公司把开放API玩得不亦乐乎。如果不是开放,估计Facebook与Twitter也不可能在如此短的时间异军突起,让Google与微软毫无反击之力。

如果用一般程序员的眼光来看,Facebook核心表不过区区45个,但看似简单并不影响人家的强大,例如Wordpress的表也是极少的。这段时间在折腾Facebook的App开发,国内的资料本是极少,主要是因为国内无法访问Facebook,所以做Facebook开发的人很少,资料也自然少了。

知识准备

如果你想做Facebook的App开发,首要的知识准备就是翻墙,因为Facebook是在墙外的,不要问我为什么,你懂的。然后你还需要一些基础的英文水平,虽然Facebook有简单中文,但对于开发都来说,许多东西还是英文的,不过没关系,其实很简单,以我这么弱智的英文都能搞定。

其实Facebook支持多种开发语言,包括C#、Python、Javascript、Java等,Javascript/PHP/Python及Android与iPhone的有官方SDK。所以说,你有上述几种语言之一的开发经验,就可以做App开发了,其实我个人觉得,最重要的还是创意+Html/CSS/Javascript。基于第三方平台的开发一般都不会是很强大的应用,但毕竟人家2亿的用户不是盖的,随便捡个零头的用户来都吓死你了。

OK,最后总结一下,你需要C#/Java/Python/Javascript的开发经验之一,官方推荐的是PHP5,实际上都不会太难。最重要的还是基础的网页语言,虽然简单,但却很实用。另外,你可能需要一些简单的Sql语句,其实也不会太难。

申请

  1. 申请一个Facebook的帐号,如果你已经拥有一个帐号,可以忽略此步。
  2. 申请开通Developer权限,实际Developer功能也是作为一个特殊的App放在Facebook上,你可以点击这儿,貌似我没有找到入口,点击同意即可。
  3. 点击Set Up New Application按钮,这时候Facebook会要求你用信用卡或者手机验证,其实只是验证一下你的身份而已,不用担心。
    image
  4. 填写程序的基本信息,这个就是你App的名称了,可以随便填写。然后根据提示一步一步往下走即可,在此我不再累述。小提示:程序名称可以和别人一样,但是Canvas Page不能冲突,其实上Facebook的程序是用http://apps.facebook.com/CanvasPage/这种方式来访问,所以要求Canvas Page是全局唯一的,基本上你能想到的好名称都已经被申请了,凑合整一个吧。Canvas URL是放在你服务器上的地址,因为Facebook是可以支持iFrame的方式集成的。
  5. 到这里你就可以获得一个Application Key/App ID/Application Secret了,其中App Key及App ID是在开发中常需要用到验证的。更复杂的设置咱们暂时忽略吧,只是有一处,在Advanced中有一个Sandbox Mode可以选择为Enable,因为你在开发过程中可以把程序放到沙箱中,不需要别人看到。

Demo

Facebook提供的API可以说是非常非常强大,我目前还没有用过人人网与51的API,不知道他们的API是什么样的。Facebook的API可以直接写Sql语句,当然这个Sql语句会经过安全审核的。在写Demo之前,我简单介绍一下FacebookAPI的构成。

Facebook的API主要是FQL/FBML/Graph API/Social plugins四大部分组成,其中Social plugins主要是提供一些工具给第三方网站,比如说OpenID登陆和Like按钮。而FBML是xHTML的一个变种,假如你使用iFrame的方式,可以忽略他们的标记语言,直接自己写就OK了。所以这两种API我暂且不谈,主要来谈谈FQL与FBML。

FQL实际上就是Facebook所提供的Sql语句,可以通过FQL查询Facebook的45个表,基本上和一般的Sql语句没什么区别,但是不支持联结查询要,可以支持in查询,根据我的测试大概是这样。

需要注意的是,你所查询的内容一定是在经过授权内的,不是说你随便给个Sql语句就可以查到所有用户的资料。FQL不允许使用*来查询所有字段,一定要直接写入字段的名称。关于FQL的参考资料,请访问这里

说到授权,我之前也为这个事找了不少的资料,在默认授权的情况下,许多的资料例如用户的E-mail都是null。后来才发现需要经过授权申请,官方提供了一大堆的授权说明,有兴趣的朋友可以访问这里。在Javascript中授权就是在FB.login需要加上授权的参数即可,其它开发语言也是大同小异。

而对于Graph API,我们可以理解为FQL的提炼版,因为很多时候我们可能只需要简单的应用,不需要直接去查Sql语句,比如说获取用户的好友,就直接用my/friends就OK了,获取用户的活动,直接使用me/events就可以了。我们可以这样来理解Graph API,Facebook让所有内容都有一个唯一的编码,不管是活动还是图片、应用程序、用户的profile等,而Graph API则可以通过这个唯一的编码访问到这些资料。关于Graph API的参考资料,请访问这里

最后,上一道大餐,把Demo代码给整上来吧,我是使用Javascript来做这个Demo的,你可以选择你自己熟悉的开发语言。这里再说一个小技巧,如果你是选择iFrame方式而非FBML,你可以把程序部署到你本机,然后通过修改Hosts文件的方式,把你程序的DNS指向本地就OK了,好处是不用每次修改都上传到服务器。

<!doctype html>
<html>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=utf-8″>
<title>Hello World</title>
</head>
<body>
<script src=”http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js”></script>
<div id=”fb-root”></div>
<script src=”http://connect.facebook.net/en_US/all.js”></script>
<script>
//用你申请到的API来初始化类库
FB.init({appId: ‘你申请到的Application ID’});

// 获取登陆状态
FB.getLoginStatus(handleSessionResponse);
function handleSessionResponse(response) {
if (!response.session) {
//要求获得用户邮件及好友列表的权限
var perms = ‘email,read_friendlists’;
FB.login(handleSessionResponse, {perms:perms});
return;
}
//获取自己的信息
FB.api(
{
method: ‘fql.query’,
query: ‘select uid,name,first_name,last_name from user where uid  = “‘ + FB.getSession().uid + ‘”‘
},
function(response) {
//输出当前用户的基本信息
alert(response[0].name);
}
);
}
</script>
</body>
</html>

参考资源:Facebook开发者中心 Javascript SDK PHP SDK Python SDK

嗯,或者你也可以收听我的微博,腾讯微博(主要用这个,其他的看我的个人介绍)

我写博客常常出现错别字,常常错得还很离谱,有时候我自己看了第二遍都骂我自个儿,但我又不习惯重复审查,纠结啊...各位看到啥错别字或者不明白的地方,请给我留言指出来,感谢感谢。

  

  • 24个评论在 "Facebook应用开发新手入门指南"

  • 冠豪
    2012-2-10 23:05
    回复TA

    不错的教程。哈

  • karl
    2012-2-2 17:41
    回复TA

    十分感谢,国内的Facebook开发资料实在稀罕,只能去查英文资料,有些名词都没有搞懂意思。另外国内申请程序员的审核也挺麻烦的,我搞了2个星期才通过。

    • 涂雅
      2012-2-2 17:49
      回复TA

      国内fb没多少人用,自然资料少,程序员需要审核?

      • karl
        2012-2-2 17:59
        回复TA

        在Facebook我申请开发一个APP,要求我核实我的真是身份,需要当地官方的证件,如身份证等,拍个照片发过去。

  • 晓晓
    2011-12-29 14:48
    回复TA

    你好 ,最近在做一个facebook的应用,遇到一个很纠结的问题,可以请教一下吗?

    • 涂雅
      2011-12-31 14:05
      回复TA

      FB我好久没玩了,之前有做一个应用,但未完成,也是边学边做,建议你去国外网站找些资料。

  • chuangjiang
    2011-4-22 18:32
    回复TA

    以前一直不解facebook,twitter为什么会如此流行,现在看来是否因为开放了API?

  • 蓝色夏威夷
    2011-2-19 16:10
    回复TA

    博客这个教程给的不错啊。一直想关注一下facebook应用开发。上次就是因为没有怎么玩bacebook在面试时被一家台企拒绝了。

  • 八子
    2010-11-23 20:15
    回复TA

    还是入门指南给力啊,校内网的和非死不可的开发是类似的吗?

  • 小猪凯
    2010-10-27 14:44
    回复TA

    你好,我正被facebook api的使用搞得焦头烂额.请问可否向你请教?谢谢

    • 涂雅
      2010-10-28 12:15
      回复TA

      呵,可以发邮件和我一起探讨,不过我也精通 :p

  • 网来往去
    2010-10-9 12:53
    回复TA

    局域网内,想搞个Facebook应用出来,很是费劲啊。

  • sobeder
    2010-10-5 18:23
    回复TA

    不错,收藏了学习哈。

  • Firm
    2010-9-28 12:01
    回复TA

    这个属于高技术范畴了、、、

    • 涂雅
      2010-9-28 15:20
      回复TA

      不算吧,不过国内少有人用facebook,研究的人自然少了

  • kd
    2010-9-27 22:53
    回复TA

    非常合時, 剛剛在搞這個~~~~

    • 涂雅
      2010-9-28 15:16
      回复TA

      呵,我也百研究,一起学习 :p

  • 百度黑板报
    2010-9-27 00:02
    回复TA

    开放是大趋势,是保持先进性和领先的基础。
    另,确实,创意无价。

  • 拉拉虎
    2010-9-26 23:41
    回复TA

    唉,多年没有登陆FB了

  • 实木家具
    2010-9-26 23:34
    回复TA

    真是悲衷的,这样的网站也要翻墙……

  • 怪蜀黍
    2010-9-26 17:52
    回复TA

    恩,很详细,收藏了~

  • 草根网
    2010-9-26 11:44
    回复TA

    好文,收藏至20ju.com

  • Hyperion
    2010-9-25 18:43
    回复TA

    可惜英语不够好…中文界面应用…要吃一点亏把

  • 评论敬告那些为做SEO而评论的朋友,本博不欢迎此类评论,请不要利用本博做关键字,一律封杀。

    绝不跨省追捕
    不会发垃圾邮件
    增加你的流量