- Совместимость с XenForo
- XF 2.1
- XF 2.2
- XF 2.3
- Видимый копирайт
- Нет
Добавляет новую конечную точку к контроллеру Users API, позволяя разработчикам находить пользователя на основе одного из трех критериев:
Например, если указаны все три параметра и найдено совпадение user_id, оно будет возвращено независимо от параметров электронной почты или имени пользователя. Аналогично, если user_id не найден, но адрес электронной почты есть, то пользователь с этим адресом электронной почты будет возвращен независимо от указанного имени пользователя.
Конечную точку можно найти по адресу:
Это дополнение было создано, чтобы помочь мне интегрировать мои форумы с моей системой поддержки (HelpSpot). При просмотре запросов в службу поддержки в HelpSpot мы можем выполнить "живой поиск" во внешней системе, чтобы получить пользовательские данные для отображения и/или сохранения в системе службы поддержки. В моем случае он запрашивает мои форумы и возвращает такую информацию, как имена пользователей, статус пользователя, дата регистрации и даже ссылку на их профиль пользователя на форумах.
Иногда у меня есть user_id, иногда у меня есть адрес электронной почты, а иногда у меня есть имя пользователя - поэтому система просто отправляет то, что у нее есть, в XenForo API, а затем возвращает найденного пользователя. Обратите внимание, что существует промежуточный компонент, который преобразует запрос HelpSpot в вызов API XenForo, а затем преобразует пользовательские данные, возвращаемые XenForo, в формат XML, требуемый HelpSpot.
Требования:
Вам понадобится ключ API с именем user:read scope, и если вы хотите получить данные адреса электронной почты в ответе, пользователю API также потребуются права администратора с правом управления пользователями и модераторами.
Ответ:
В возвращаемых данных ответа есть два главных элемента:
Примеры:
- user_id
- username
Например, если указаны все три параметра и найдено совпадение user_id, оно будет возвращено независимо от параметров электронной почты или имени пользователя. Аналогично, если user_id не найден, но адрес электронной почты есть, то пользователь с этим адресом электронной почты будет возвращен независимо от указанного имени пользователя.
Конечную точку можно найти по адресу:
GET users/find-criteria
Это дополнение было создано, чтобы помочь мне интегрировать мои форумы с моей системой поддержки (HelpSpot). При просмотре запросов в службу поддержки в HelpSpot мы можем выполнить "живой поиск" во внешней системе, чтобы получить пользовательские данные для отображения и/или сохранения в системе службы поддержки. В моем случае он запрашивает мои форумы и возвращает такую информацию, как имена пользователей, статус пользователя, дата регистрации и даже ссылку на их профиль пользователя на форумах.
Иногда у меня есть user_id, иногда у меня есть адрес электронной почты, а иногда у меня есть имя пользователя - поэтому система просто отправляет то, что у нее есть, в XenForo API, а затем возвращает найденного пользователя. Обратите внимание, что существует промежуточный компонент, который преобразует запрос HelpSpot в вызов API XenForo, а затем преобразует пользовательские данные, возвращаемые XenForo, в формат XML, требуемый HelpSpot.
Требования:
Вам понадобится ключ API с именем user:read scope, и если вы хотите получить данные адреса электронной почты в ответе, пользователю API также потребуются права администратора с правом управления пользователями и модераторами.
Ответ:
В возвращаемых данных ответа есть два главных элемента:
user
- содержит полную запись пользователя в соответствии с типом данных пользователяurls
- список URL-адресов для получения дополнительной информации об этом пользователе:api
- ссылка на вызов API для получения информации об этом пользователе напрямую на основе идентификатора пользователя (из основного API)public
- ссылка на общедоступный профиль этого пользователя в XenForoadmin
- ссылка на профиль администратора XenForo для этого пользователя
Примеры:
- cURL
PHP:
<?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);
PHP:
$client = new \GuzzleHttp\Client([
'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 = \GuzzleHttp\json_decode($response->getBody()->getContents(), true);
var_dump($data);
PHP:
$response = \Illuminate\Support\Facades\Http::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);