Я создал REST API, используя Документация Yii2. Кажется, он работает нормально, так как я могу использовать curl следующим образом:
curl -i "https://example.com/api/v3/user" \
-H "Accept:application/json" \
-H "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Теперь я хотел бы иметь возможность использовать эти данные с другого сайта Yii2. Я пытаюсь использовать клиент Yii2 REST API. Я не буду публиковать весь код, так как это в основном копия Клиент Facebook в yiisoft / yii2-authclient.
Кто-нибудь знает руководство, которое поможет мне изменить это, чтобы использовать мой API? Во-первых, я борюсь с тем, что положить на $authUrl
а также $tokenUrl
,
Я не уверен, нужно ли вам расширять класс outh2, поскольку я считаю, что у вас не завершена логика аутентификации в первом веб-приложении Yii2, например, аутентификация с использованием первого URL-адреса веб-приложения, а затем перенаправление на второе веб-приложение для извлечения токена из URL-адреса.
Это может быть проще, просто создать компонент, который имеет эти методы
class YourRestClient {
const BASE_URL = 'https://example.com/api/v3';
private $_token = null;
public function authenticate($username,$password){
$client = new Client();
$response = $client->createRequest()
->setMethod('POST')
->setUrl(BASE_URL.'/user/login')
->setData(['username' => $username, 'password' => $password])
->send();
if ($response->isOk) {
$this->_token = $response->data['token'];
}
}
public function logout(){
//your logut logic
}
public function refreshToken(){
//your refresh logic
}
public function userList(){
$client = new Client();
$response = $client->createRequest()
->setMethod('GET')
->setUrl(BASE_URL.'/user/users')
->addHeaders([
'content-type' => 'application/json',
'Authorization' => 'Bearer '.$_token,
])
->send();
if ($response->isOk) {
return $response->getData();
}
}
}
для получения дополнительной информации HttpClient
Если я не ошибаюсь, что вам понадобится для этого, так это использовать yiisoft/yii2-httpclient
Ref: https://github.com/yiisoft/yii2-httpclient
Добавьте это: php composer.phar require --prefer-dist yiisoft/yii2-httpclient
Затем сделайте звонок: «Я бы, вероятно, построил модель, чтобы справиться с этим»
use yii\httpclient\Client;
$client = new Client();
$response = $client->createRequest()
->setMethod('GET')
->setUrl('https://example.com/api/v3/user')
->addHeaders(['Authorization' => 'Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'])
->send();
if ($response->isOk) {
// use your data
}