- Модуль: socialservices
- Путь к файлу: ~/bitrix/modules/socialservices/classes/general/google.php
- Класс: CGoogleOAuthInterface
- Вызов: CGoogleOAuthInterface::GetAccessToken
public function GetAccessToken($redirect_uri = false)
{
$tokens = $this->getStorageTokens();
if(is_array($tokens))
{
$this->access_token = $tokens["OATOKEN"];
$this->accessTokenExpires = $tokens["OATOKEN_EXPIRES"];
if(!$this->code)
{
if($this->checkAccessToken())
{
return true;
}
elseif(isset($tokens["REFRESH_TOKEN"]))
{
if($this->getNewAccessToken($tokens["REFRESH_TOKEN"], $this->userId, true))
{
return true;
}
}
}
$this->deleteStorageTokens();
}
if($this->code === false)
{
return false;
}
if($redirect_uri === false)
{
if(IsModuleInstalled('bitrix24') && defined('BX24_HOST_NAME'))
{
$redirect_uri = CSocServGoogleOAuth::getControllerUrl()."/redirect.php";
}
else
{
$redirect_uri = $this->getRedirectUri();
}
}
$authParams = [
"client_id" => $this->appID,
"code" => $this->code,
"redirect_uri" => $redirect_uri,
"grant_type" => "authorization_code",
"client_secret" => $this->appSecret,
];
$this->arResult = $this->getDecodedJson(static::TOKEN_URL, $authParams);
if(isset($this->arResult["access_token"]) && $this->arResult["access_token"] <> '')
{
if(isset($this->arResult["refresh_token"]) && $this->arResult["refresh_token"] <> '')
{
$this->refresh_token = $this->arResult["refresh_token"];
}
$this->access_token = $this->arResult["access_token"];
$this->accessTokenExpires = $this->arResult["expires_in"] + time();
$_SESSION["OAUTH_DATA"] = array(
"OATOKEN" => $this->access_token,
"OATOKEN_EXPIRES" => $this->accessTokenExpires,
"REFRESH_TOKEN" => $this->refresh_token,
);
return true;
}
return false;
}