簡體   English   中英

如何從 curl 響應中提取值

[英]How to extract values from a curl reponse

我在下面有這個方法和 curl 功能。 我想使用 PHP 從結果中提取訪問令牌。 我嘗試了三種方式回顯,如下面的代碼所示,但我只得到 boolean 響應或錯誤。 我該怎么做 go 呢?

    $consumer_key = "CONSUMER_KEY";
    $consumer_secret = "CONSUMER_SECRET";

    $url = 'https://sandbox.safaricom.co.ke/oauth/v1/generate?grant_type=client_credentials';

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    $credentials = base64_encode($consumer_key.":".$consumer_secret);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$credentials)); //setting a custom header
    curl_setopt($curl, CURLOPT_HEADER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    $curl_response = curl_exec($curl);

    $access_token = json_decode($curl_response);
    echo "<br><br>---------------Trial 1-------------<br>";
    echo $curl_response;
    echo "<br><br>---------------Trial 2-------------<br>";
    echo $access_token->access_token;
    echo "<br><br>---------------Trial 3-------------<br>";
    echo $access_token['access_token'];

  }```

This is the response I get:

---------------Trial 1-------------
HTTP/1.1 200 OK Date: Fri, 07 May 2021 10:18:40 GMT Content-Type: application/json;charset=UTF-8 Content-Length: 113 Connection: keep-alive Cache-Control: no-store { "access_token": "a6aAK9rdA4MA2ChqVzEDge6DAWTC", "expires_in": "3599" }

---------------Trial 2-------------
A PHP Error was encountered
Severity: Notice

Message: Trying to get property 'access_token' of non-object

Filename: controllers/Lab.php

Line Number: 99

Backtrace:

File: /home2/airduka/public_html/sandbox/application/controllers/Lab.php
Line: 99
Function: _error_handler

File: /home2/airduka/public_html/sandbox/index.php
Line: 315
Function: require_once



---------------Trial 3-------------

通過將 CURLOPT_HEADER 設置為 false 來禁用響應 header。

curl_setopt($curl, CURLOPT_HEADER, false);

然后 json_decode 將起作用,您可以使用它獲取令牌;

$curl_response = curl_exec($curl);
$access_token = json_decode($curl_response, true);
$access_token['access_token']

使用以下代碼使 json object 作為數組返回:

$access_token = json_decode($curl_response, true);

然后您可以通過以下方式獲取訪問令牌:

$access_token['access_token']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM