API endpoint: Find a User by Criteria 1.0.1
Добавляет новую конечную точку в контроллер API пользователей, что позволяет разработчикам извлекать пользователя на основе одного из трех критериев:
user_id
username
Все параметры являются необязательными, и если указано более одного, поиск выполняется по каждому критерию в указанном порядке.
Например, если указаны все три параметра и найдено соответствие user_id , оно будет возвращено независимо от параметров электронной почты или имени пользователя. Точно так же, если user_id не найден, но адрес электронной почты есть, то пользователь с таким адресом электронной почты будет возвращен независимо от указанного имени пользователя.
Конечная точка может быть найдена по адресу: GET users/find-criteria
Это дополнение было создано, чтобы помочь автору плагина интегрировать свои форумы со своей системой поддержки (HelpSpot). При просмотре запросов в службу поддержки в HelpSpot мы можем выполнить «живой поиск» во внешней системе, чтобы извлечь данные пользователя для отображения и / или сохранения в системе службы поддержки. В его случае он запрашивает мои форумы и возвращает информацию, такую как имена пользователей, статус пользователя, дату регистрации и даже ссылку на их профиль на форуме.
Иногда у нас есть user_id , иногда у нас есть адрес электронной почты, а иногда у нас есть имя пользователя - поэтому система просто отправляет то, что имеет, в API XenForo, а затем возвращает найденного пользователя. Обратите внимание, что существует промежуточный компонент, который переводит запрос HelpSpot в вызов API XenForo, а затем переводит данные пользовательских данных, возвращаемых из XenForo, в формат XML, необходимый для HelpSpot.
Требования:
Вам понадобится ключ API с user:read , и если вы хотите получить данные адреса электронной почты в ответе, пользователю API также понадобятся привилегии администратора с правами «Управление пользователями и модераторами».
Ответ:
В возвращаемых данных ответа есть два верхних элемента:
user - содержит полную запись пользователя в соответствии с User data type
urls - список URL для получения дополнительной информации об этом пользователе:
api - ссылка на вызов API для получения информации об этом пользователе напрямую на основе идентификатора пользователя (из основного API)
public - ссылка на публичный профиль XenForo для этого пользователя
admin - ссылка на профиль администратора XenForo для этого пользователя
Примеры:
cURL
PHP: Скопировать
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "http://xenforo21.local/api/users/find-criteria?user_id=2&email=test@example.com&username=test%20user",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_TIMEOUT => 0,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"XF-Api-Key: your-api-key",
],
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
var_dump($data);
Guzzle
PHP: Скопировать
$client = new GuzzleHttpClient([
'base_uri' => 'http://xenforo21.local/api/'
]);
$response = $client->request('GET', 'users/find-criteria', [
'query' => [
'user_id' => 2,
'email' => 'test@example.com',
'username' => 'test user'
],
'http_errors' => false,
'headers' => [
'XF-Api-Key' => 'your-api-key'
]
]);
$data = GuzzleHttpjson_decode($response->getBody()->getContents(), true);
var_dump($data);
Laravel 7
PHP: Скопировать
$response = IlluminateSupportFacadesHttp::withHeaders([
'XF-Api-Key' => 'your-api-key'
])->get('http://xenforo21.local/api/users/find-criteria', [
'user_id' => 2,
'email' => 'test@example.com',
'username' => 'test user'
]);
$data = $response->json();
var_dump($data);