1

我一直在使用 Codeigniter 作为框架和宝塔盒作为托管服务的 Facebook 画布页面应用程序。到目前为止,我已经成功启动并运行了该应用程序,现在我正在尝试使用开放图形在人们的时间轴上发布交互。我遇到的问题是,当我将正在使用的 URL 插入调试器(http://developers.facebook.com/tools/debug)时,出现错误:

“您的 . " (逐字)

我已经浏览了我的代码,但我们还没有发现这是真的案例。所以我继续调试,发现错误集中在控制器中对 Facebook 的签名请求的 $_REQUEST 调用上。所以我用 html 标签包围了 $_REQUEST,它可以作为一种黑客攻击,但我想知道是否有更好的方法可以做。此外,它会导致图形 api 返回:

'"message": "发生意外错误。请稍后重试您的请求。", "type": "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>

谢谢!

4

0 回答 0