Facebook应用程序选项卡 - >与PHP的外部链接

时间:2010-08-19 17:32:48

标签: php facebook

我目前在Facebook标签上有一个应用程序,我想知道是否有办法让我深入链接到该应用程序选项卡上的项目。例如:

用户在应用程序中(正在搜索书籍),找到他们喜欢的书,并希望与朋友分享。他们点击分享它,我可以提取所有信息,但是我没有深层链接,所以当它通过电子邮件发送时,通过电子邮件发送,下载,等等。它会将用户直接发送到带有它的页面上。

这可以在应用程序选项卡上进行吗?我知道在画布上我可以很好地链接...但是在App标签上寻找一种方法。

感谢您的想法和回应。

4 个答案:

答案 0 :(得分:24)

以下是我们如何深入链接到我们应用的页面标签中的子页面

当您的应用程序位于页面选项卡内时,Facebook将删除除app_data之外的所有GET参数。它在POST数据的app_data参数内传递signed_request

文档中的更多信息:https://developers.facebook.com/docs/authentication/signed_request/

因此,当我们构建子页面链接时,它看起来像

http://www.facebook.com/myfanpage?sk=app_XXXXXX&app_data=%2Fmainpage%2Fsubpage

然后,在我们的索引页面代码中,我们检查app_data param。如果它存在,那么一个简单的302重定向就可以了。

$request = parse_signed_request($_POST['signed_request']);
if ($request['app_data'])
{
    header('HTTP/1.1 302 Found');
    header('Location: {$request['app_data']}');
    exit;
}

注意:您可以使用URL编码的JSON数组或类似内容在app_data内传递多个参数。

答案 1 :(得分:3)

也许。

对于Application Canvas页面,Facebook会将任何附加URI信息转发到画布回调。

例如,如果您的应用页面为http://apps.facebook.com/testapp

并且您的画布回调是http://facebook.example.com/testapp/canvas

然后转到http://apps.facebook.com/testapp/foo?bar=baz会导致Facebook的服务器像http://facebook.example.com/testapp/canvas/foo?bar=baz一样点击你的。

我从来没有测试它以查看应用程序选项卡是否共享此行为,但它值得一试。如果是这样,您可以使用URI信息来推动深层链接。

此外,您应该了解impending changes到应用程序标签。

答案 2 :(得分:2)

对于那些需要完整(但工作量最小)的例子(比如我自己),这里是index.php,它在需要时进行深层链接。确保您已下载Facebook PHP SDK并且require路径指向它。 (显然,您还需要使用自己的应用信息替换$app_id$app_secret。)

<?php
require 'facebook-php-sdk/src/facebook.php';

$app_id     = "YOUR_APP_ID_HERE";
$app_secret = "YOUR_APP_SECRET_ID_HERE";

$facebook = new Facebook(array(
    'appId'  => $app_id,
    'secret' => $app_secret
));

$signed_request = $facebook->getSignedRequest();

// Get app_data from signed request POST
$app_data = $signed_request["app_data"];

// Parse app_data & Re-direct
if ($app_data) {
    header("HTTP/1.1 302 Found");
    header("Location: {$app_data}");
exit;
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:fb="http://www.facebook.com/2008/fbml" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Title Here</title>
</head>
<body>
    <h1>Landing Page</h1>
</body>
</html>

此外,请确保在您的FB应用设置中,您的所有网址路径(即画布网址,网页标签网址等)都以反斜杠结尾,否则您将收到一些301重定向错误。

一旦您的应用设置完成且added it your fan page,您就可以与以下内容进行深层链接:

http://www.facebook.com/pages/MYFANPAGE/XXXXX?sk=app_XXXXX&app_data=sub/another.php

在使用它之前,您可能需要解析实际的app_data值,但对我来说,它的工作原理如上所述。

希望能帮助其他人。当然,Facebook可能随时改变这一切。

答案 3 :(得分:1)

到目前为止,我们无法使用网址参数深入链接到应用程序标签。

我们可以从应用程序页面(例如http://apps.facebook.com/testapp/foo?bar=bar

中检索window.location信息

在应用标签上工作(例如http://www.facebook.com/testpage?v=app_1234&bar=bar

同样,如果我们在Facebook标签页中,我们也无法使用$_GET['foo']尝试抓住服务器端。

如果有人设法解决这个问题,我很想知道解决方案。