Я пытаюсь получить токен доступа из Facebook с помощью PHP SDK 3.2.2, который является кодом ниже того, что я разместил в URL-адресе перенаправления после успешного входа пользователя в Facebook. Моя проблема в том, что $this->facebook->getAccessToken() не возвращает токен доступа пользователя после того, как пользователь предоставляет доступ к приложению, а просто строку в форме: 'AppId|AppSecret' , и я должен включить код, чтобы вручную получить токен доступа пользователя. Это работает, но я не знаю, ПОЧЕМУ, когда я использую getAccessToken, я не возвращаю правильный токен. Я также хотел бы знать, есть ли лучший способ получить токен доступа пользователя, чем с помощью $code, потому что я не думаю, что это хороший способ сделать это.
ПРИМЕЧАНИЕ. Я использую $this->facebook, поскольку загружаю его как библиотеку Codeigniter.
$access_token = $this->facebook->getAccessToken();
//-------------------------------------------------------------------------
//echo '<br/>Access Token: ' . $access_token;
// Generare Token if not created:
$code = $_REQUEST["code"];
if ( isset($code) ) {
//echo '<br/>Code Enviado: ' . $code;
//exit();
$appId = $this->facebook->getAppId();
$appSecret = $this->facebook->getAppSecret();
$redirectTo = base_url('asociar/acc_facebook/step2/');
$token_url="https://graph.facebook.com/oauth/access_token?client_id="
. $appId . "&redirect_uri=" . urlencode($redirectTo)
. "&client_secret=" . $appSecret
. "&code=" . $code . "&display=popup";
$response = file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$access_token = $params['access_token'];
//echo '<br/>Repitiendo el Token';
$this->facebook->setAccessToken($access_token);
//echo '<br/>Second Access Token Fijado: ' . $access_token;
}
//-----------------------------------------------------------------------
ОБНОВИТЬ:
Эта проблема связана с тем, что я использовал CI с PHP SDK (проверьте мой собственный ответ), но ответ действителен для всех, у кого есть эта проблема с Facebook PHP SDK (проверьте ответ @Imbru)