- Модуль: socialservices
- Путь к файлу: ~/bitrix/modules/socialservices/classes/general/box.php
- Класс: CBoxOAuthInterface
- Вызов: CBoxOAuthInterface::GetAccessToken
public function GetAccessToken($redirect_uri)
{
$token = $this->getStorageTokens();
if(is_array($token))
{
if(!$this->code)
{
$this->access_token = $token["OATOKEN"];
$this->accessTokenExpires = $token["OATOKEN_EXPIRES"];
if($this->checkAccessToken())
{
return true;
}
elseif(isset($token["REFRESH_TOKEN"]))
{
if($this->getNewAccessToken($token["REFRESH_TOKEN"], $token["USER_ID"], true))
{
return true;
}
}
}
$this->deleteStorageTokens();
}
if($this->code === false)
{
return false;
}
$h = new HttpClient();
$result = $h->post(static::TOKEN_URL, array(
"code"=>$this->code,
"client_id"=>$this->appID,
"client_secret"=>$this->appSecret,
"redirect_uri"=>$redirect_uri,
"grant_type"=>"authorization_code",
));
$this->oauthResult = Json::decode($result);
if(isset($this->oauthResult["access_token"]) && $this->oauthResult["access_token"] <> '')
{
$this->access_token = $this->oauthResult["access_token"];
$this->accessTokenExpires = time() + $this->oauthResult["expires_in"];
if(isset($this->oauthResult["refresh_token"]) && $this->oauthResult["refresh_token"] <> '')
{
$this->refresh_token = $this->oauthResult["refresh_token"];
}
$_SESSION["OAUTH_DATA"] = array(
"OATOKEN" => $this->access_token,
);
return true;
}
return false;
}