- Модуль: socialservices
- Путь к файлу: ~/bitrix/modules/socialservices/classes/general/mailru2.php
- Класс: CMailRu2Interface
- Вызов: CMailRu2Interface::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->code)
{
if ($this->checkAccessToken())
{
return true;
}
else if (isset($token['REFRESH_TOKEN']))
{
if ($this->getNewAccessToken($token['REFRESH_TOKEN'], $this->userId, true))
{
return true;
}
}
}
$this->deleteStorageTokens();
}
if ($this->code === false)
{
return false;
}
$query = array(
"code" => $this->code,
"grant_type" => "authorization_code",
"redirect_uri" => $redirect_uri,
);
$h = new BitrixMainWebHttpClient(array(
"socketTimeout" => $this->httpTimeout,
"streamTimeout" => $this->httpTimeout,
));
$h->setAuthorization($this->appID, $this->appSecret);
$h->setHeader('User-Agent', 'Bitrix'); // Mail.ru requires User-Agent to be set
$result = $h->post(self::TOKEN_URL, $query);
try
{
$arResult = BitrixMainWebJson::decode($result);
}
catch (BitrixMainArgumentException $e)
{
$arResult = array();
}
if ((isset($arResult["access_token"]) && $arResult["access_token"] <> ''))
{
$this->access_token = $arResult["access_token"];
$this->accessTokenExpires = time() + $arResult["expires_in"];
$this->refresh_token = $arResult['refresh_token'];
$_SESSION["OAUTH_DATA"] = array(
"OATOKEN" => $this->access_token,
"OATOKEN_EXPIRES" => $this->accessTokenExpires,
"REFRESH_TOKEN" => $this->refresh_token
);
return true;
}
return false;
}