Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Can';t使用Facebook注册插件后获取用户_Php_Sdk_Facebook - Fatal编程技术网

Php Can';t使用Facebook注册插件后获取用户

Php Can';t使用Facebook注册插件后获取用户,php,sdk,facebook,Php,Sdk,Facebook,因此,我使用Facebook注册插件和Javascript SDK(使用xfbml显示它)。注册工作正常,我处理注册的代码如下所示: # Check if the form has been submitted. if(array_key_exists('signed_request', $_REQUEST)) { define('FACEBOOK_APP_ID', 'REMOVED'); define('FACEBOOK_SECRET', 'REMOVED'); fu

因此,我使用Facebook注册插件和Javascript SDK(使用xfbml显示它)。注册工作正常,我处理注册的代码如下所示:

# Check if the form has been submitted.
if(array_key_exists('signed_request', $_REQUEST))
{
    define('FACEBOOK_APP_ID', 'REMOVED');
    define('FACEBOOK_SECRET', 'REMOVED');

    function parse_signed_request($signed_request, $secret) {
        list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

        // decode the data
        $sig = base64_url_decode($encoded_sig);
        $data = json_decode(base64_url_decode($payload), true);

        if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
            error_log('Unknown algorithm. Expected HMAC-SHA256');
            return null;
        }

        $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
        if ($sig !== $expected_sig) {
            error_log('Bad Signed JSON signature!');
            return null;
        }

        return $data;
    }

    function base64_url_decode($input) {
        return base64_decode(strtr($input, '-_', '+/'));
    }

    if ($_REQUEST) {
        # Load the Users model.
        $this->load->model('Users');

        # Save the data from the form.
        $response = parse_signed_request($_REQUEST['signed_request'], FACEBOOK_SECRET);

        # Save the user's email.
        $user['email'] = $response['registration']['email'];

        # Boolean that stores if the user registered through FB.
        $facebook;

// the rest is irrelevant
因此,一旦用户注册,我将其重定向回主页。当我登录我的Facebook帐户时,我的网站会显示在我使用过的应用程序下(在隐私设置中)

尽管如此,当我尝试在主页上使用PHPSDK时,用户似乎没有经过身份验证。下面的代码将“0”打印为$user\u id,“not valid”打印为$isvalid。以下代码用于主页:

require 'application/sdk/facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'REMOVED',
  'secret' => 'REMOVED',
));

// Get User ID
$user = $facebook->getUser();

echo $user;
$isvalid;

try { 
    $facebook->api('/me');
    $isvalid = true;
} catch (FacebookApiException $e) {
    $isvalid = false;
    echo "not valid";
}
我做错了什么


谢谢

在过去的八个小时里,我把头发拔了出来,在一块石头的底部发现了这块宝石:

如果您只使用PHPSDK进行 身份验证,请立即升级。如果 您使用的是JavaScript SDK 与PHP SDK一起登录, 您将要等待 JavaScript-SDK升级(第4版) 周)。PHP SDK的3.0.0版 不会配合当前的 cookie导致的JavaScript SDK 格式更改

是时候使用旧的SDK了