Всякий раз, когда я пытаюсь войти в приглашение, открывается запрос о базовых разрешениях, после чего его перенаправляют на мой redirect_uri с URL-адресом
= "> HTTP: // локальный / демо / код = AQDwzia3Wx1BktixF59jVHbm0ViGVJm8Xhb2tNZDyYreZh0KoSJhrSsJ8Aa2KX3gocwR0XNQjQz7ZlBh26_nBi-3iOMByhVO2cxwJ8maC4IHxBacfqXjzqIyBaZQbWKUUxPI6VBrqBgFXQasj7PEtmug7lt93dK4fmMC2A4i2dUYU-gSvzn0f0ZdB3eT_aSvgR1KoLCmQgLh3xix4H05QR6LCP9nLtQC4l9rMJW83kS0PNmWq0COZYvGfuX1R7519Fn3iXRB9F0MTsK1KQ_ulpK84PUCkuMu8et88Lln0ZwuzaPo0oERelkPWYnrrTKa-5w и состояние = ed66ea618d8076d9e72c15d9a65a6312 # =
- Опубликовать на странице facebook без разрешения «manage_pages», используя php
- Сессия Facebook - NULL после аутентификации с помощью PHP SDK
- Включение входа в facebook, используя facebook php-sdk (v.3.0.0), с сеансами и файлами cookie
- Facebook PHP SDK Бросает непонятное исключение OAuthException
- Сообщения, запланированные через Graph API, часто не публикуются
Хотя 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' ));
И посмотрим, работает ли это!
если кто-то все еще стучит головой, вот что сейчас не так. Я был нанят, чтобы исправить этот беспорядок!
Проверьте домен приложения в панели fb, должен соответствовать домену, в котором находится ваше приложение.
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; }
найдите строку:
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
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.