• Модуль: socialservices
  • Путь к файлу: ~/bitrix/modules/socialservices/classes/general/facebook.php
  • Класс: CFacebookInterface
  • Вызов: CFacebookInterface::GetAccessToken
public function GetAccessToken($redirect_uri)
{
	$token = $this->getStorageTokens();
	if(is_array($token))
	{
		$this->access_token = $token["OATOKEN"];
		$this->accessTokenExpires = $token["OATOKEN_EXPIRES"];

		if($this->checkAccessToken())
		{
			return true;
		}
	}

	if($this->code === false)
	{
		return false;
	}

	$result = CHTTP::sGetHeader(self::GRAPH_URL.'/oauth/access_token?client_id='.$this->appID.'&client_secret='.$this->appSecret.'&redirect_uri='.urlencode($redirect_uri).'&code='.urlencode($this->code), array(), $this->httpTimeout);

	$arResult = Json::decode($result);
	$this->responseData = $arResult;

	if(isset($arResult["access_token"]) && $arResult["access_token"] <> '')
	{
		$result = CHTTP::sGetHeader(self::GRAPH_URL."/oauth/access_token?grant_type=fb_exchange_token&client_id=".$this->appID."&client_secret=".$this->appSecret."&fb_exchange_token=".$arResult["access_token"], array(), $this->httpTimeout);

		$arResultLongLive = Json::decode($result);

		if(isset($arResultLongLive["access_token"]) && $arResultLongLive["access_token"] <> '')
		{
			$arResult["access_token"] = $arResultLongLive["access_token"];
			$arResult["expires"] = isset($arResultLongLive["expires_in"]) ? $arResultLongLive["expires_in"] : 86400 * 60;
			$_SESSION["OAUTH_DATA"] = array(
				"OATOKEN" => $arResultLongLive["access_token"],
				"OATOKEN_EXPIRES" => time() + $arResultLongLive['expires'],
			);
		}

		$this->access_token = $arResult["access_token"];
		$this->accessTokenExpires = time() + $arResult["expires"];

		return true;
	}

	if (isset($this->responseData['error']))
	{
		$this->responseData = array(
			'error' => $this->responseData['error']['type'],
			'error_description' => $this->responseData['error']['message'],
		);
	}

	return false;
}