我一直在使用Codeigniter作为框架和宝塔盒作为托管服务的Facebook画布页面应用程序。到目前为止,我已经成功运行了应用程序并且现在正尝试使用开放图表在人员时间轴上发布交互。我遇到的问题是,当我将我使用的URL插入调试器(http://developers.facebook.com/tools/debug)时,我收到错误:
“你有你的标签。这可能是因为你的格式错误,他们在解析树中跌倒了,或者你不小心把你的Open Graph标签放在了错误的地方。无论哪种方式你需要在标签之前修复它可以使用。“ (逐字)
我已经完成了我的代码,我们还没有找到一个这样的情况。所以我继续调试,发现错误集中在对控制器中的signed_request的$ _REQUEST调用。所以我用html标签包围了$ _REQUEST,这些标签起到了黑客的作用,但我想知道是否有更好的东西可以做。此外,它会导致图形api返回:
'“message”:“发生意外错误。请稍后重试您的请求。”,“输入”:“OAuthException”,“code”:2“'
这是我的代码片段 控制器:
echo '<html>';
echo '<head>';
if(isset($_REQUEST['signed_request'])) {
$encoded_sig = null;
$payload = null;
list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
$sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
$data = json_decode(base64_decode(strtr($payload, '-_', '+/'), TRUE), TRUE);
} else {
echo 'error';
}
echo '</head>';
echo '</html>';
查看:
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"
xmlns:fb="https://www.facebook.com/2008/fbml">
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# app-name:
http://ogp.me/ns/fb/app-name#">
<title>Facebook Title | Corp Name</title>
<meta charset="utf-8" />
<meta property="fb:admins" content="[Number]" />
<meta property="fb:app_id" content="[App-id]" />
<meta property="og:type" content="app-name:action" />
<meta property="og:url" content="<?php echo base_url(); ?>" />
<meta property="og:title" content="The beginning" />
<meta property="og:image" content="[image-url]" />
<script type="text/javascript">
function postObject()
{
FB.api(
'/me/app-name:object',
'post',
{ invitation: '<?php echo base_url(); ?>' },
function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('Accept was successful! Action ID: ' + response.id);
}
});
}
</script>
</head>
<body>
....
</body>
谢谢!