从外部获得响应 API 需要登录会话

Get responses from External API need Login session

我想从外部获取数据 API。但是,我必须在获取数据之前登录以获取会话,并且在获取数据之后我必须注销

这是我的代码

    use GuzzleHttp\Client;

    $client = new Client();
    $res = $client->request('POST', 'Login_URL', [
        'json' => [
            "JSON param"
        ]
    ]);
    $res = $client->request('GET', 'Get_URL');
    $res = $client->request('POST', 'Logout_URL');

但我只能第一步(登录)。我在第二步获取数据时收到错误消息

Client error: `GET "Get_URL" ` resulted in a `401 Unauthorized` response:{"message":"You are not logged in."}

我如何 运行 所有这些代码在第一步登录会话?

此代码供您进行登录和注销会话

$cookie_jar = tempnam("tmp", "cookie");
    //login
        $curl = curl_init();

        curl_setopt_array($curl, array(
          CURLOPT_URL => '_URL',
          CURLOPT_RETURNTRANSFER=> true,
          CURLOPT_ENCODING      => '',
          CURLOPT_MAXREDIRS     => 10,
          CURLOPT_TIMEOUT       => 0,
          CURLOPT_FOLLOWLOCATION=> true,
          CURLOPT_HTTP_VERSION  => CURL_HTTP_VERSION_1_1,
          CURLOPT_CUSTOMREQUEST => 'POST',
          CURLOPT_COOKIEJAR     => $cookie_jar,
          CURLOPT_POSTFIELDS    =>'{
            "name"      : "****",
            "password"  : "****",
            "company"   :  "****"
        }',
          CURLOPT_HTTPHEADER => array(
            'Content-Type: application/json'),
        )
    );
    $response = curl_exec($curl);
    //get data
    curl_setopt_array($curl, array(
        CURLOPT_URL             => '_URL',
        CURLOPT_RETURNTRANSFER  => true,
        CURLOPT_ENCODING        => '',
        CURLOPT_MAXREDIRS       => 10,
        CURLOPT_TIMEOUT         => 0,
        CURLOPT_FOLLOWLOCATION  => true,
        CURLOPT_HTTP_VERSION    => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST   => 'GET',
        CURLOPT_COOKIEFILE      => $cookie_jar
        )
    );
    $datapo = json_decode(curl_exec($curl));
    //logout
    curl_setopt_array($curl, array(
        CURLOPT_URL             => '_URL',
        CURLOPT_RETURNTRANSFER  => true,
        CURLOPT_ENCODING        => '',
        CURLOPT_MAXREDIRS       => 10,
        CURLOPT_TIMEOUT         => 0,
        CURLOPT_FOLLOWLOCATION  => true,
        CURLOPT_HTTP_VERSION    => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST   => 'POST',
        CURLOPT_POSTFIELDS      => '{   
            "name" : "****",
            "password" : "****",
            "company" :   "****"
        }',
        CURLOPT_COOKIEFILE      => $cookie_jar
        )
    );
    $response = curl_exec($curl);