目录 *引言 *创建“Hello World”程序 *在用户信息栏中使用FBML(FaceBook标记语言) *在用户信息栏中使用mock-AJAX技术 *使用Mysql数据库创建计数器 *将这些例子代码集合到一起 *相关下载 引言 这个教程指导我们如何创建一个名为“tutorialapp”的应用,当你创建自己的程序的时候,它可以作为一个模板。使用这个教程需要你有一个支持php5的web服务器。 最新版本的“tutorialapp”可以在这里(http://tperry256.dreamhost.com/f8/tutorialapp/)找到。访问这个连接的时候,系统会要求你登录到facebook,并且增加“tutorialapp”程序。在很多公司像这样访问服务一个月只需要花费几美元而已。 .....
引言
这个教程指导我们如何创建一个名为“tutorialapp”的应用,当你创建自己的程序的时候,它可以作为一个模板。使用这个教程需要你有一个支持php5的web服务器。
最新版本的“tutorialapp”可以在这里(http://tperry256.dreamhost.com/f8/tutorialapp/)找到。访问这个连接的时候,系统会要求你登录到facebook,并且增加“tutorialapp”程序。在很多公司像这样访问服务一个月只需要花费几美元而已。
当你创建了自己的应用,你会使用一个不同的名称和不同的服务器。我们把那些会使你的应用与众不同的地方用这种颜色高亮显示。
创建“hello World”程序
| 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
<?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技术
<?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数据库创建计数器
<?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>"$$ |
将这些例子代码集合到一起
<?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;
|
相关下载
runer注:
本文是我第一次在译言上的翻译,部分名词参照毛心宇的翻译:http://www.yeeyan.com/articles/view/395/2347
【本文翻译仅为外语学习及阅读目的,原文作者个人观点与译者及译言网无关】