1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
oauthtransport.php
См. документацию.
1<?php
3{
4 const SERVICE_ID = "generic";
5
6 protected $appID;
7 protected $appSecret;
8 protected $code = false;
9 protected $access_token = false;
10 protected $accessTokenExpires = 0;
11 protected $refresh_token = '';
12
13 protected $scope = array();
14
15 protected $userId;
16
17 public function __construct($appID, $appSecret, $code = false)
18 {
19 global $USER;
20
21 $this->httpTimeout = SOCSERV_DEFAULT_HTTP_TIMEOUT;
22 $this->appID = $appID;
23 $this->appSecret = $appSecret;
24 $this->code = $code;
25
26 if(is_object($USER) && $USER->IsAuthorized())
27 {
28 $this->userId = $USER->GetID();
29 }
30 }
31
32 public function getAppID()
33 {
34 return $this->appID;
35 }
36
37 public function getAppSecret()
38 {
39 return $this->appSecret;
40 }
41
42 public function getAccessTokenExpires()
43 {
45 }
46
48 {
49 $this->accessTokenExpires = $accessTokenExpires;
50 }
51
52 public function getToken()
53 {
55 }
56
57 public function setToken($access_token)
58 {
59 $this->access_token = $access_token;
60 }
61
63 {
64 $this->refresh_token = $refresh_token;
65 }
66
67 public function getRefreshToken()
68 {
70 }
71
72 public function removeScope(string $scope): void
73 {
74 if (!$this->scope)
75 {
76 return;
77 }
78
79 $this->scope = array_diff($this->scope, [$scope]);
80 }
81
82 public function addScope($scope)
83 {
84 if(is_array($scope))
85 $this->scope = array_merge($this->scope, $scope);
86 else
87 $this->scope[] = $scope;
88 return $this;
89 }
90
91 public function setScope($scope)
92 {
93 $this->scope = $scope;
94 }
95
96 public function getScope()
97 {
98 return $this->scope;
99 }
100
101 public function getScopeEncode()
102 {
103 return implode(',', array_map('urlencode', array_unique($this->getScope())));
104 }
105
106 public function setCode($code)
107 {
108 $this->code = $code;
109 }
110
111 public function setUser($userId)
112 {
113 $this->userId = $userId;
114 }
115
116 protected function getStorageTokens()
117 {
118 $accessToken = '';
119 if($this->userId > 0)
120 {
121 $dbSocservUser = \Bitrix\Socialservices\UserTable::getList([
122 'filter' => [
123 '=USER_ID' => $this->userId,
124 "=EXTERNAL_AUTH_ID" => static::SERVICE_ID
125 ],
126 'select' => ["USER_ID", "XML_ID", "OATOKEN", "OATOKEN_EXPIRES", "REFRESH_TOKEN", "PERMISSIONS"]
127 ]);
128
129 $accessToken = $dbSocservUser->fetch();
130 }
131 return $accessToken;
132 }
133
134 public function deleteStorageTokens()
135 {
136 if($this->userId > 0)
137 {
138 $dbSocservUser = \Bitrix\Socialservices\UserTable::getList(array(
139 'filter' => array(
140 '=USER_ID' => $this->userId,
141 "=EXTERNAL_AUTH_ID" => static::SERVICE_ID
142 ),
143 'select' => array("ID")
144 ));
145
146 while($accessToken = $dbSocservUser->fetch())
147 {
148 \Bitrix\Socialservices\UserTable::delete($accessToken['ID']);
149 }
150 }
151 }
152
153 public function checkAccessToken()
154 {
155 return (($this->accessTokenExpires - 30) < time()) ? false : true;
156 }
157
158 public function getResult()
159 {
160 return array();
161 }
162
163 protected function getDecodedJson($url, $postData = null)
164 {
165 $http = new \Bitrix\Main\Web\HttpClient([
166 'socketTimeout' => $this->httpTimeout,
167 'streamTimeout' => $this->httpTimeout,
168 ]);
169
170 if (isset($postData))
171 {
172 $postResult = $http->post($url, $postData);
173 }
174 else
175 {
176 $postResult = $http->get($url);
177 }
178
179 try
180 {
181 $decodedResult = \Bitrix\Main\Web\Json::decode($postResult);
182 }
183 catch (\Bitrix\Main\ArgumentException $e)
184 {
185 if (defined("BX_SOCIALSERVICES_ERROR_DEBUG"))
186 {
188 'post_url' => $http->getEffectiveUrl(),
189 'result_status' => $http->getStatus(),
190 'result_error' => $http->getError(),
191 'result_text' => $http->getResult(),
192 ], 'socialservices', 40);
193 }
194 $decodedResult = [];
195 }
196
197 return $decodedResult;
198 }
199}
static decode($data)
Определения json.php:50
setAccessTokenExpires($accessTokenExpires)
Определения oauthtransport.php:47
setScope($scope)
Определения oauthtransport.php:91
setToken($access_token)
Определения oauthtransport.php:57
getStorageTokens()
Определения oauthtransport.php:116
addScope($scope)
Определения oauthtransport.php:82
deleteStorageTokens()
Определения oauthtransport.php:134
removeScope(string $scope)
Определения oauthtransport.php:72
const SERVICE_ID
Определения oauthtransport.php:4
getRefreshToken()
Определения oauthtransport.php:67
__construct($appID, $appSecret, $code=false)
Определения oauthtransport.php:17
$accessTokenExpires
Определения oauthtransport.php:10
setCode($code)
Определения oauthtransport.php:106
setUser($userId)
Определения oauthtransport.php:111
setRefreshToken($refresh_token)
Определения oauthtransport.php:62
checkAccessToken()
Определения oauthtransport.php:153
getAccessTokenExpires()
Определения oauthtransport.php:42
getDecodedJson($url, $postData=null)
Определения oauthtransport.php:163
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
global $USER
Определения csv_new_run.php:40
AddMessage2Log($text, $module='', $traceDepth=6, $showArgs=false)
Определения tools.php:3941
return false
Определения prolog_main_admin.php:185
$postData
Определения index.php:29
const SOCSERV_DEFAULT_HTTP_TIMEOUT
Определения include.php:5
$url
Определения iframe.php:7