白金译作 手把手教你开发Facebook 应用

6481个读者 翻译: runer  12/02/2007 原文 引用 双语对照及眉批 字体大小

目录
  1. 引言
  2. 创建“Hello World”程序
  3. 在用户信息栏中使用FBML(FaceBook标记语言)
  4. 在用户信息栏中使用mock-AJAX技术
  5. 使用Mysql数据库创建计数器
  6. 将这些例子代码集合到一起
  7. 相关下载

  引言

       这个教程指导我们如何创建一个名为“tutorialapp”的应用,当你创建自己的程序的时候,它可以作为一个模板。使用这个教程需要你有一个支持php5的web服务器。

       最新版本的“tutorialapp”可以在这里(http://tperry256.dreamhost.com/f8/tutorialapp/)找到。访问这个连接的时候,系统会要求你登录到facebook,并且增加“tutorialapp”程序。在很多公司像这样访问服务一个月只需要花费几美元而已。

      当你创建了自己的应用,你会使用一个不同的名称不同的服务器。我们把那些会使你的应用与众不同的地方用这种颜色高亮显示。

      创建“hello World”程序

  1. 访问:http://developers.facebook.com/
  2. 点击“Get Started
  3. 点击“Add Facebook Developer Application
  4. 一个到“Developer”的链接将显示在Facebook的左边导航栏,进入应用开发
  5. 点击“Setup new Application”按钮
  6. 下面是一些表单的填写步骤
  1. Application Name:在本文中,我们填写“Tutorial Application”--对于你自己的应用,你要填写自己不同的名称。
  2. 点击“Terms of service
  3. 点击“Optional Fields”链接,来进行更详细的配置
  4. Support E-mail:你在Facebook的注册Email会自动填入,但可能你并不希望自己的个人Email被所有使用你应用的人知道,所以也可以填写一个你可以使用的其他Email。
  5. CallBack Url:在本文中,我们填写“'http://tperry256.dreamhost.com/f8/tutorialapp/”。你应该填入不同的URL,通常情况下,你要填写你自己服务器上运行这个应用的目录的URL。
  6. Canvas Page URL:http://apps.facebook.com/在本文中,我们填写“tutorialapp”--你必须为自己的应用填写一个不同的名称。
  7. Use FBML:保持默认设置即可。
  8. Application Type:保持此处设置为:“website”
  9. Can your application be added to Facebook:设置“yes”,然后进行详细设置
  10. TOS URL:留空即可。
  11. Post-Add Url:在本文中,我们填写“'http://apps.facebook.com/tutorialapp/”,对于你自己的应用,一般你应该填写自己一个不同的面板页的完整路径。
  12. Default FBML:输入“hello”
  13. 其他的设置按照安装默认即可。
  14. Side Nav Url:在本文中,我们填写“http://apps.facebook.com/tutorialapp”,对于你自己的应用,也应该填写自己不同面板页的完整路径。
  15. 其他设置使用默认即可。
点击“Submit”按钮提交。 进入“My Application”页面,检查刚才的应用是否已经创建。 拷贝php5最新版的客户端库文件到你的服务器端应用程序的目录。 在后面的“相关下载”中有库文件的一些下载地址。如果你使用一个类UNIX 的shell,并且当前位于应用程序的目录,那么可以运行下面的命令:

 wget http://developers.facebook.com/clientlibs/facebook-platform.tar.gz
tar zxvf facebook-platform.tar.gz
cp facebook-platform/client/facebook.php .
cp facebook-platform/client/facebookapi_php5_restlib.php .
rm -rf facebook-platform.tar.gz facebook-platform

  11.   建立一个“appinclude.php”文件,该文件要被你的应用的所有php文件在头部包含。将如下代码粘贴到文件中:

 
<?php
require_once 'facebook.php';

$appapikey = '';
$appsecret = '';
$facebook = new Facebook($appapikey, $appsecret);
$user = $facebook->require_login();

//[todo: change the following url to your callback url]
$appcallbackurl = '';

//catch the exception that gets thrown if the cookie has an invalid session_key in it
try {
  if (!$facebook->api_client->users_isAppAdded()) {
    $facebook->redirect($facebook->get_add_url());
  }
} catch (Exception $ex) {
  //this will clear cookies for your application and redirect them to a login prompt
  $facebook->set_user(null, null);
  $facebook->redirect($appcallbackurl);
}

  12.   将其中的“app_key”和“secret”替换成你自己的。他们将显示在应用开发网站的的“My Applications”页面中,你同时要将我们的“call back URL”换成你自己的。

   13.  创建一个“index.php”文件,它将是你的应用的主页面,将如下代码粘贴进去:

 
<?php
require_once 'appinclude.php';

echo "<p>hello $user</p>"$$

  14.   在浏览器中输入你创建的应用的回调地址,你也可以输入面板页的路径,都会访问到“index.php”这个主页。总之,不管哪种方式,都是要在你的浏览器中输入地址 :-)

          这是我们这个应用的回调地址:http://tperry256.dreamhost.com/f8/tutorialapp/

           这是我们这个应用的面板页地址:http://apps.facebook.com/tutorialapp/

  15.   点击“I agree”接受你的应用的服务条款,然后点击“Add [你的应用的名称]”。

  16.   接着系统会自动转向到面板页,其中包含了“index.php”的运行的输出结果。

  17.   在这个应用中,进入你的用户信息栏中,你会发现“hello”字符,这个是你在前面设置的默认FBML。

   18.   最后,从左边的导航栏可以返回到面板页。

 

在个人信息栏中使用FBML

  1. 下面是“index.php”的一个扩展版本,它可以将用户在表单中填写的字符串显示在用户的信息栏中
  2. 注意:提交空字符串会导致用户信息栏的无法显示!

 
<?php
require_once 'appinclude.php';

echo "<p>hello $user</p>"$$

if (isset($_REQUEST['profiletext'])) {
  $facebook->api_client->profile_setFBML($_REQUEST['profiletext'], $user);
  $facebook->redirect($facebook->get_facebook_url() . '/profile.php');
}

echo '<form action="" method="get">';
echo '<input name="profiletext" type="text" size="30" value=""><br>';
echo '<input name="submit" type="submit" value="Display text on profile">';
echo '</form>';

在用户信息栏中使用mock-AjAX技术

  1. 下面的代码使用FBML的mock-AJAX技术在用户信息栏中增加一个表单,会给用户一种信息栏被动态更新的假象。
  2. 注意“index.php”文件的最上面对mock-AJAX进行调用的if语句。

 
<?php
if (isset($_REQUEST['mockfbmltext'])) {
  echo $_REQUEST['mockfbmltext'];
  exit;
}

require_once 'appinclude.php';

echo "<p>hello $user</p>"$$

$fbml = <<<EndHereDoc
<fb:subtitle>This is the subtitle</fb:subtitle>

<form>
<input name="mockfbmltext" type="text" size="30">
<br />
<input type="submit"
  clickrewriteurl="$appcallbackurl"
  clickrewriteid="preview" value="Draw text below"
/>
<br />
<div id="preview" style="border-style: solid; border-color: black;
  border-width: 1px; padding: 5px;">
</div>
</form>
EndHereDoc;

$facebook->api_client->profile_setFBML($fbml, $user);

echo "<p>the following form was added to the profile box:</p>"$$

echo $fbml;

 

使用Mysql数据库创建计数器

  1. 这个例子需要你在服务器上创建一个php脚本可以访问的数据库。
  2. 如果你没有数据库,就新建一个。
  3. 在这个数据库中新建一个名为“counter”的数据表,表中有一个名为“count”的integer类型的列。
  4. 创建一个新文件名为“dbappinclude.php”,将下面的代码粘贴进去,别忘了替换你自己的数据库地址,用户,密码和数据库名称。

 
<?php
require_once 'appinclude.php';

$dbhost = '';
$dbuser = '';
$dbpass = '';
$dbname = '';

$conn = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname, $conn);

function query($q) {
  global $conn;
  $result = mysql_query($q, $conn);
  if (!$result) {
    die("Invalid query -- $q -- " . mysql_error());
  }
  return $result;
}

 5.    现在在浏览器中访问下面这个新版本的“index.php”,主页将显示一个计数器,并且没访问一次“index.php”,计数器就会更新一次。

 <?php
require_once 'dbappinclude.php';

echo "<p>hello $user</p>"$$

$rs = query("select count from counter");
if ($row = mysql_fetch_assoc($rs)) {
  $count = $row['count'];
  query("update counter set count=count+1");
} else {
  query("insert into counter values (1)");
  $count = 1;
}

echo "<p>the count is $count</p>"$$

 

将这些例子代码集合到一起

  1. 这里是一个最终版本的“index.php”,将上面的例子集合到了一起,假定你已经在前一个例子中创建了“dbappinclude.php

 
<?php
if (isset($_REQUEST['mockfbmltext'])) {
  echo $_REQUEST['mockfbmltext'];
  exit;
}

require_once 'dbappinclude.php';

echo "<p>hello $user</p>"$$

$rs = query("select count from counter");
if ($row = mysql_fetch_assoc($rs)) {
  $count = $row['count'];
  query("update counter set count=count+1");
} else {
  query("insert into counter values (1)");
  $count = 1;
}

echo "<p>the count is $count</p>"$$

if (isset($_REQUEST['profiletext'])) {
  $facebook->api_client->profile_setFBML($_REQUEST['profiletext'], $user);
  $facebook->redirect($facebook->get_facebook_url() . '/profile.php');
}

echo '<form action="" method="get">';
echo '<input name="profiletext" type="text" size="30" value=""><br>';
echo '<input name="submit" type="submit" value="Display text on profile">';
echo '</form>';

$fbml = <<<EndHereDoc
<form>
<input name="mockfbmltext" type="text" size="30">
<br />
<input type="submit"
  clickrewriteurl="$appcallbackurl"
  clickrewriteid="preview" value="Draw text below"
/>
<br />
<div id="preview" style="border-style: solid; border-color: black;
  border-width: 1px; padding: 5px;">
</div>
</form>
EndHereDoc;

$facebook->api_client->profile_setFBML($fbml, $user);

echo "<p>the following form was added to the profile box:</p>"$$

echo $fbml;

 

相关下载

  1. facebook_client.tar.gz -- php5的最新客户端库文件
  2. tutorialapp.tar.gz -- 将文中例子合并到一起的代码。在你自己的服务器上运行时需要替换其中的“app_key”,“application secret”和数据库信息
  3. tutorialapp.zip --和上面tutorialapp.tar.gz内容相同,为zip压缩格式

runer注:

     本文是我第一次在译言上的翻译,部分名词参照毛心宇的翻译:http://www.yeeyan.com/articles/view/395/2347

继续阅读
  • 如何提高页面响应速度

            访问速度缓慢的互联网已经成为过去,但页面能瞬时呈现也只是未来才会发生的事情. Christianheilmann的一些技巧,现在就可以令你的网站访问起来更为流畅。         页...

  • P2P:未来潜力股介绍

    与上篇类似的介绍略 正如我们在第一篇文章中所说的那样,互联网接入速度在不断增长而P2P网络的需求也在增长。但是很多可以通过P2P网络做到底的事情都还在开发或者研究中。这个领域有深不可测的潜力可掘,至...

  • P2P介绍和互联网应用

    作者:Can Erten(我叫他罐子先生:D)修改:Richard MacManus。 这是在Read/WriteWeb上发表的以探索网络的P2P世界为主题的两篇系列文章中的第一篇。第一部分(本文)...

  • 最流行的8款网络电视应用软件

    8个星期来,我一直着迷于手边可以得到的每一款网络电视应用。本文罗列目前网络电视应用的概括。 注:以下应用提供不同特点和解决不同问题。这篇文章不是产品间的比较——因为就好像拿苹果与橘子相比那样——但是提...

  • 学校内:10个最棒的大学生网络应用

    对于大学生来讲十款最有用的web2.0新应用。

  • 用一流的简历武装你自己

    你的简历只有几秒钟的时间来打动别人—要么被扔进垃圾桶。

  • 20个firefox侧边栏的实用web小工具

    如果你使用的是宽屏电脑,那么页面左右两侧常常会空出来一大块。这个时候你可以使用firefox的侧边栏,在右侧上网时,也可以在左右运行个什么东西。这样整个浏览器得到了充分的利用。以下是一些你可以放在fi...

  • ies4osx——让你的MacOSX运行IE!

    不需要BootCamp,也无需VMware。或许有用户知道Linux平台的伟大软件ies4linux,现在这个工具已经移植到了OS X平台,现在,无论IE5、6、7,所有版本的IE均可以运行于OS X...

相关小组

标签:

内容有问题?请与我们联络。

译作评分

  • Currently 4.50/5
  • 1
  • 2
  • 3
  • 4
  • 5
 4.5  |  2 个评分

7条评论    0眉批

  • 1.

    ybadboy2k 童生

    很有用,谢谢,但是暂时还是看不太懂,但以后会的!

    12/02/2007

  • 2.

    rokia 贡生

    Great! Thanks.

    12/03/2007

  • 3.

    雷声大雨点大 大学士 | Blog

    有已经动手开发过Facebook App的朋友么?

    12/04/2007

  • 4.

    runer 进士 | Blog

    最近几天,我正在尝试

    12/04/2007

  • 5.

    vole 童生

    正好要研究facebook,谢谢

    12/05/2007

  • 6.

    anbore 童生

    The developer of this application does not currently allow it to be added.
    <br/><br/>
    <br/><br/>为什么我按你的做完以后,当进入以后显示的是这个信息呢 ~~能帮我分析一下吗!?谢谢

    12/28/2007

  • 7.

    Chool 进士

    我有点开发facebook模块的经验,不是给自己做的,给客户做的.
    哈哈,我希望将来facebook上也有我自己的模块.

    03/08/2008

添加评论

欢迎访问译言网。在这里,您可以。。。

阅读
发现
翻译