Facebook php SDK 4 getSessionFromReDirect()始终为空

时间:2015-01-22 作者:IImanuII

我已经安装了wordpress 4.1和以下插件:

我插入了facebook sdk的一个功能。

代码如下:

//Footer
add_action(\'wp_footer\', \'my_footer\');
function my_footer() {
    $post_to_check = get_post(get_the_ID());
    if ( is_singular() && has_shortcode( $post_to_check->post_content, \'myshortcode\' ) ) {
?>
<script>
var DEBUG = true;

jQuery(document).ready(function($){
    $.ajax({
        type : "POST",
        url : "index.php",
        data : { action : "value" },
        success : function(response){
            // the server has finished executing PHP and has returned something, so display it!
            if(DEBUG){ console.log(\'AJAX done...\'); }
        }
    });
});
</script>
<?php
    }
}

//ajax
add_action(\'init\', \'my_request\');
function my_request() {
    if ( isset($_POST[\'action\']) && $_POST[\'action\'] == \'value\' ) {

        session_start();

        require_once __DIR__ . "/sdk/autoload.php";

        use Facebook\\FacebookSession;
        use Facebook\\FacebookRequest;
        use Facebook\\GraphUser;
        use Facebook\\FacebookRedirectLoginHelper;
        use Facebook\\FacebookSDKException;

        $app_id     = getAppId();
        $app_secret = getAppSecret();
        $rdr_fb_url = curPageURL();
        $required_scope = \'public_profile, email\';

        if(empty($app_id) || empty($app_secret))
            exit(\'Error.\');

        FacebookSession::setDefaultApplication($app_id , $app_secret);

        $helper = new FacebookRedirectLoginHelper($rdr_fb_url);

        try {
          $session = $helper->getSessionFromRedirect();
        } catch(FacebookRequestException $ex) {
            // When Facebook returns an error
            die(" Error : " . $ex->getMessage());
        } catch(\\Exception $ex) {
            // When validation fails or other local issues
            die(" Error : " . $ex->getMessage());
        }

        var_dump($session);

        if ($session){
            $user_profile = (new FacebookRequest($session, \'GET\', \'/me\'))->execute()->getGraphObject(GraphUser::className());
            echo \'Hi\'.$user_profile->getName();

        }else{
            //display login url
            $login_url = $helper->getLoginUrl( array( \'scope\' => $required_scope ) );
        }

?>
<div class="login">
    <a href="<?php echo $login_url; ?>">Login</a>
</div>
<?php
    exit();
  }
}
如果我在wordpress之外使用这个,效果很好。在wp var\\u dump中($会话);检索始终为空。(未给出错误)即使在接受申请条款之后。就好像他无法在url中获取代码一样。

我还试图禁用插件,但什么都没有。

我需要php,请不要告诉我使用javascript。

对不起,我的英语不好:P

编辑:我使用永久链接:http://www.myste.com/%year%/%monthnum%/%postname%/

我认为问题是重写规则隐藏了facebook获取。

1 个回复
SO网友:IImanuII

已解决:我在ajax调用之外输入了代码function my_footer() {

结束

相关推荐

分页链接未显示在iOS设备上的Single.php帖子中

所以我已经在我的公文包网站上工作了一段时间,昨天晚上刚刚推出了第一个“ok to be live版本”。我给了它一个快速的QA,发现了一些我知道的错误,但真正困扰我的是为什么“下一篇文章”和“上一篇文章”链接没有出现在我的单个帖子上。索引。php分页很好。如果有人需要查看我的js和css文件,我会将其解压缩。首先,这里有一个指向inspector屏幕截图的链接。您会注意到,标记是从nav中php输入的。php文件,但锚定标记应为空的范围:这是我的单曲代码。php:<?php get_header()