使用 Yii2 REST 客户端使用 Yii2 REST API

Mr *_*bri 1 php api rest rest-client yii2

我使用Yii2 文档创建了一个 REST API 。它似乎工作正常,因为我可以像这样使用 curl:

curl -i "https://example.com/api/v3/user" \
    -H "Accept:application/json"  \
    -H "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Run Code Online (Sandbox Code Playgroud)

我现在希望能够从另一个 Yii2 站点使用这些数据。我正在尝试使用 Yii2 REST API 客户端。因为它是基本的副本,我不会张贴整个代码的Facebook客户端yiisoft / yii2-authclient

有没有人知道帮助我修改它以使用我的 API 的指南?在第一种情况下,我用什么把挣扎$authUrl$tokenUrl

Moh*_*mar 5

我不确定您是否需要扩展 outh2 类,因为我相信您没有在第一个 Yii2 webapp 中完成身份验证逻辑,例如使用第一个 webapp url 进行身份验证然后重定向到第二个 webapp 以从 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();
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

了解更多信息httpclient