- Модуль: socialservices
- Путь к файлу: ~/bitrix/modules/socialservices/classes/general/bitrix24net.php
- Класс: CBitrix24NetOAuthInterface
- Вызов: CBitrix24NetOAuthInterface::getNewAccessToken
public function getNewAccessToken($refreshToken = false, $userId = 0, $save = false, $scope = array())
{
if($this->appID == false || $this->appSecret == false)
return false;
if($refreshToken == false)
$refreshToken = $this->refresh_token;
if($scope != null)
$this->addScope($scope);
$http = new BitrixMainWebHttpClient(array(
'socketTimeout' => $this->httpTimeout,
'streamTimeout' => $this->httpTimeout,
));
$result = $http->get($this->networkNode . self::TOKEN_URL . '?' . http_build_query([
'client_id' => $this->appID,
'client_secret' => $this->appSecret,
'refresh_token' => $refreshToken,
'scope' => implode(',',$this->getScope()),
'grant_type' => 'refresh_token',
]));
try
{
$arResult = Json::decode($result);
}
catch(BitrixMainArgumentException $e)
{
$arResult = array("error" => "ERROR_RESPONSE", "error_description" => "Wrong response from Network");
}
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"];
if($save && intval($userId) > 0)
{
$dbSocservUser = UserTable::getList([
'filter' => [
"=USER_ID" => intval($userId),
"=EXTERNAL_AUTH_ID" => CSocServBitrix24Net::ID
],
'select' => ['ID']
]);
$arOauth = $dbSocservUser->fetch();
if($arOauth)
{
UserTable::update(
$arOauth["ID"], array(
"OATOKEN" => $this->access_token,
"OATOKEN_EXPIRES" => $this->accessTokenExpires,
"REFRESH_TOKEN" => $this->refresh_token,
)
);
}
}
return true;
}
return false;
}