我有一个设置的Facebook“登陆标签”,我已经安装了另一个标签,我希望在粉丝点击“喜欢”按钮后激活该标签。我已经搜索了互联网并提出了JavaScript和PHP SDK代码的混合,但到目前为止我还没有真正有效。
我想有两个主要问题:
在粉丝最初访问该网站后(他们直接进入着陆标签)并点击“赞”按钮,我希望iframe重定向到我创建的其他标签。我尝试了一个简单的JavaScript重定向(windows.location = "URL"
),并将其更改为我想要的URL但不在Facebook iframe中 - 显然它也没有被点击的行为调用。
如果我可以完成上述工作,那么下一个问题是,一旦点击了like按钮,我希望第二个标签始终是用户的默认选项....现在用户点击“喜欢”之后“它会指向墙页面,当访问者返回页面时它又是墙页面。如果我遇到问题#1使用重定向,那么它总是会默认为第二个标签,还是当他们重新访问该页面时仍然会将人们送到墙上?
这是我找到的一些代码。 JavaScript SDK和PHP SDK。我哪里错了?
FB.Event.subscribe('edge.create',
function(response) {
location.href = 'URLofSecondtab';
}
);
上面的代码是我被告知的JavaScript中喜欢的Facebook事件处理程序。
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({appId: 'idOfLandingTab', status: true, cookie: true, xfbml: true});
//FB.Canvas.setSize({ width: 520, height: 1500 });
FB.Event.subscribe('edge.create',
function(response) {
alert('like!');
// put redirect code here eg
window.location = "URLofSecondtab";
}
);
};
//Load the SDK asynchronously
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
我找到了PHP SDK并且无法实现:
<?php
// Sample PHP code to customize the a Facebook Fan Page iFrame Application
// Refer to http://www.hyperarts.com/blog/customizing-facebook-iframe-application- signed_request_reveal_tab
require 'facebook.php';
$app_id = "APP_ID_HERE"; //which app id? the landing tab or the second tab that I want //redirected?
$app_secret = "APP_SECRET_HERE";
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));
$signed_request = $facebook->getSignedRequest();
$page_id = $signed_request["page"]["id"];
$page_admin = $signed_request["page"]["admin"];
$like_status = $signed_request["page"]["liked"];
$country = $signed_request["user"]["country"];
$locale = $signed_request["user"]["locale"];
echo "<br>page id = $page_id";
echo "<br>page admin = $page_admin";
echo "<br>like status = $like_status";
echo "<br>country = $country";
echo "<br>locale = $locale";
?>
在哪个位置需要哪个标签网址和应用ID?什么样的代码(JavaScript或PHP代码)?
答案 0 :(得分:1)
如果您使用的是Facebook页面选项卡,那么参数将如下所示(PHP):
$signed_request=$_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
//to get page id use this => $data["page"]["id"]
//to get liked or unlike page => $data["page"]["liked"] = this will return 1 if
//liked else blank
更多信息:https://developers.facebook.com/docs/appsonfacebook/pagetabs/ 滚动到最后并阅读此para =&gt;与Facebook API集成
答案 1 :(得分:0)
我认为您的问题可以通过以下方式解决:
How to check if a user likes my Facebook Page or URL using Facebook's API
在那个页面上,他有关于Jason Siffring的回答的代码:
if($signed_request = parsePageSignedRequest()) {
if($signed_request->page->liked) {
echo "This content is for Fans only!";
} else {
echo "Please click on the Like button to view this tab!";
}
}
而不是那些'echo',你可以回应'window.document.location.replace(“SOMEWHERE”)'
答案 2 :(得分:0)
用户喜欢该页面后会刷新,所以此时您可以使用$ page_id var来检测用户是否喜欢分页,然后重定向iframe的parnt,$ page_id的值将为1,所以在你的文件正文中你可以这样做:
<? if($page_id){ ?>
<script>window.top.location.href = "http://www.facebook.com/FANPAGE_USERNAME?sk=app_APPID";</script>
<? } ?>
答案 3 :(得分:0)
将于3月30日停止使用页面时间轴的着陆标签
编辑:如果你在谈论粉丝页面,如果不是没关系的话。