Php 授权后,Facebook重定向到我的网站,但未设置用户ID

Php 授权后,Facebook重定向到我的网站,但未设置用户ID,php,facebook,sdk,authorization,Php,Facebook,Sdk,Authorization,用户访问我的应用程序的画布页面,该页面指示他们授权应用程序。然后将它们重定向到我的网站,在那里我使用PHPSDK查找有关用户的信息 不幸的是,用户ID在从Facebook重定向后返回0 $fb_user = $facebook->getUser(); 这仅在授权后立即发生。如果用户导航到“我的网站”上的另一个页面,或重新加载该页面,则返回正确的UID,并且一切正常 重定向会在Facebook完成授权之前发生吗?Facebook是否在重定向中发送用户ID?(可以配置吗?我们得到了这样的信息

用户访问我的应用程序的画布页面,该页面指示他们授权应用程序。然后将它们重定向到我的网站,在那里我使用PHPSDK查找有关用户的信息

不幸的是,用户ID在从Facebook重定向后返回0

$fb_user = $facebook->getUser();
这仅在授权后立即发生。如果用户导航到“我的网站”上的另一个页面,或重新加载该页面,则返回正确的UID,并且一切正常


重定向会在Facebook完成授权之前发生吗?Facebook是否在重定向中发送用户ID?(可以配置吗?

我们得到了这样的信息,授权回调后的第一页要么没有用户,要么没有烫发,要么两者都没有。应作为错误记录此问题的解决方法:

在画布页面上,我访问请求ID并将它们附加到授权请求url的查询字符串中。授权将把request_ids参数转发到我的网站上

“授权”链接上的Javascript:

由于Facebook没有返回登录用户,因此对/me的调用不会返回任何内容。(臭虫)


这稍微简化了一点,但你明白了…

亚当的变通方法非常有效,但由于某些原因,它并不完全适合我。我的解决方案是从JS授权获取所有必需的用户数据,并将其写入php会话。希望它能帮助别人

JS auth函数: Action.php
请将您的复制步骤添加到此错误中:谢谢Ben-will,我想我有一个工作要做,我将在这里发布。即使已经有了公认的答案,您也可以尝试删除$facebook->api调用中的“GET”部分(如果您有)。我遇到了同样的问题,然后我删除了上面提到的“GET”部分,然后它立即开始显示所有内容。
top.location = "http://www.facebook.com/dialog/oauth?client_id=MY_CLIENT_ID&scope=PERMISSIONS,MORE_PERMISSIONS&redirect_uri=http://www.MY_WEB_SITE.com/?request_ids=<?php echo $_REQUEST['request_ids']; ?>";
if ($fb_user===0){ //if Facebook doesn't return the user (the bug)

    $request_ids = explode( ',', $_REQUEST['request_ids'], 1 ); //get the request_ids param, limit this to one since all request_ids will reference the same user_id
    $request_info = $facebook->api('/' + $request_ids[0],'GET'); //get the request info
    $fb_user_profile = $facebook->api('/' + $request_info['to']['id']); // $request_info['to']['id'] is the associated user_id (who the request was sent to)
}
else {
    $fb_user_profile = $facebook->api('/me');
}
FB.login( function( response ) {
    if ( response.authResponse ) {
        FB.api('/me', function( response ) {
            $.ajax({
                url: 'action.php',
                type: 'POST',
                data: {
                    id:             response.id,
                    name:           response.name,
                    birthday:       response.birthday,
                    location_id:    response.location.id,
                    location_name:  response.location.name,
                    gender:         response.gender,
                    email:          response.email
                },
                success: function() {
                    location.href = 'some-page.php';
                }
            });
        });
    } else {
        alert("Please agree to the Facebook permissions.");
    }
}, { scope:'user_location, user_birthday, email, publish_actions' } );
session_start();
$_SESSION['user_info']['id']                = $_REQUEST['id'];
$_SESSION['user_info']['name']              = $_REQUEST['name'];
$_SESSION['user_info']['birthday']          = $_REQUEST['birthday'];
$_SESSION['user_info']['location']['id']    = $_REQUEST['location_id'];
$_SESSION['user_info']['location']['name']  = $_REQUEST['location_name'];
$_SESSION['user_info']['gender']            = $_REQUEST['gender'];
$_SESSION['user_info']['email']             = $_REQUEST['email'];