facebook-> getUser () возвращение 0

Всякий раз, когда я пытаюсь войти в приглашение, открывается запрос о базовых разрешениях, после чего его перенаправляют на мой redirect_uri с URL-адресом

= "> HTTP: // локальный / демо / код = AQDwzia3Wx1BktixF59jVHbm0ViGVJm8Xhb2tNZDyYreZh0KoSJhrSsJ8Aa2KX3gocwR0XNQjQz7ZlBh26_nBi-3iOMByhVO2cxwJ8maC4IHxBacfqXjzqIyBaZQbWKUUxPI6VBrqBgFXQasj7PEtmug7lt93dK4fmMC2A4i2dUYU-gSvzn0f0ZdB3eT_aSvgR1KoLCmQgLh3xix4H05QR6LCP9nLtQC4l9rMJW83kS0PNmWq0COZYvGfuX1R7519Fn3iXRB9F0MTsK1KQ_ulpK84PUCkuMu8et88Lln0ZwuzaPo0oERelkPWYnrrTKa-5w и состояние = ed66ea618d8076d9e72c15d9a65a6312 # =

Хотя facebook-> getUser () возвращает 0

Вот мой код

<?php require_once('php-sdk/facebook.php'); $facebook = new Facebook (array( 'appId' => '1234', 'secret' => '12313', 'cookie' => true )); ?> <html> <head> <title> Warming Up with FB API </title> </head> <body> <h1> Hello World </h1> </body> </html> <?php $loginUrl = $facebook->getLoginUrl(array ( 'display' => 'popup', 'redirect_uri' => 'http://localhost/demo' )); $user = $facebook->getUser(); //echo $user. '</br>'; if ($user) { echo '<em>User Id: </em> '.$user; } else { $loginUrl = $facebook->getLoginUrl(array ( 'display' => 'popup', 'redirect_uri' => 'http://localhost/demo' )); echo '<a href = "'.$loginUrl.'">Login Here </a> '; } ?> 

Я знаю его очень тривиальный вопрос, но я как бы застрял в этом и не смог продолжить дальше. Пожалуйста, предложите, что делать.

* ОБНОВЛЕНИЕ *

Оставляя домен приложения пустым, я решил проблему.

Изменить это

 $loginUrl = $facebook->getLoginUrl(array ( 'display' => 'popup', 'redirect_uri' => 'http://localhost/demo' )); 

в

 $loginUrl = $facebook->getLoginUrl(array ( 'display' => 'popup', 'redirect_uri' => 'http://localhost/demo/index.php' )); 

И посмотрим, работает ли это!

если кто-то все еще стучит головой, вот что сейчас не так. Я был нанят, чтобы исправить этот беспорядок!

  1. Проверьте домен приложения в панели fb, должен соответствовать домену, в котором находится ваше приложение.

  2. edit base_facebook.php найти:

    public function getAccessToken () {

     if ($this->accessToken !== null) { // we've done this already and cached it. Just return. return $this->accessToken; } // first establish access token to be the application // access token, in case we navigate to the /oauth/access_token // endpoint, where SOME access token is required. $getApplicationAccessToken = $this->getApplicationAccessToken(); $this->setAccessToken($getApplicationAccessToken); $user_access_token = $this->getUserAccessToken(); if ($user_access_token) { $this->setAccessToken($user_access_token); } return $this->accessToken; 

    }

для ::

  public function getAccessToken() { if ($this->accessToken !== null) { // we've done this already and cached it. Just return. return $this->accessToken; } // first establish access token to be the application // access token, in case we navigate to the /oauth/access_token // endpoint, where SOME access token is required. $getApplicationAccessToken = $this->getApplicationAccessToken(); $this->setAccessToken($getApplicationAccessToken); $user_access_token = $this->getUserAccessToken(); if ($user_access_token) { //$this->setAccessToken($user_access_token); $this->accessToken = $user_access_token; //edit; msolution } return $this->accessToken; } 
  1. Затем найдите функцию: getAccessTokenFromCode ()

найдите строку:

 parse_str($access_token_response, $response_params); 

замените его:

 //parse_str($access_token_response, $response_params); //edit:: msolution;; $response_params = json_decode($access_token_response, true ); 

комментируя оригинал и добавляя json_decode

это оно!

Если пользователь вошел в систему и все еще получает $ user = 0, я столкнулся с этой проблемой в разных случаях, но проблема с SDK не происходит со всеми. Поэтому я не уверен, что здесь не так. Но я копаюсь в этом немного и нашел решение, как указано ниже.

РЕШЕНИЕ: Это сработало для меня, пытаясь найти множество решений для этой проблемы.

В файле base_facebook.php найдите метод makeRequest () и проверьте следующую строку.

 $opts = self::$CURL_OPTS; 

Сразу после этого добавьте эту строку

 $opts[CURLOPT_SSL_VERIFYPEER] = false; 

Более подробную информацию можно найти здесь – http://net.tutsplus.com/tutorials/php/how-to-authenticate-your-users-with-facebook-connect/

Через несколько часов решение для меня было (скажем, мой сайт http://www.site123.com ):

Настройки @ https://developers.facebook.com

  1. Домен приложения: site123.com (даже он будет работать, хотя)
  2. URL сайта: http://site123.com ВАЖНО: НЕ http://www.site123.com

PHP-код – fb_config.php

 //Declarations $app_id = "{you AppID}"; $app_secret = "{your App Secret}"; $site_url = "http://site123.com/receive_data_from_facebook.php"; //New Facebook $facebook = new Facebook(array( 'appId' => $app_id, 'secret' => $app_secret, 'cookie' => TRUE, /* Optional */ 'oath' => TRUE /* Optional */ )); //Login URL $loginUrl = $facebook->getLoginUrl(array( 'scope' => 'email,user_birthday', 'redirect_uri' => $site_url, )); //Get FacebookUserID $fbuser = $facebook->getUser(); 

Важное примечание: у меня были некоторые проблемы с Firefox $ facebook-> getUser (), равным 0, даже мой код работал в Chrome. Но после очистки кеша Firefox он работал красиво!

Надеюсь, поможет.

Это может быть выполнено с использованием

 $opts[CURLOPT_SSL_VERIFYPEER] = false; after $opts = self::$CURL_OPTS; on file base_facebook.php.