如何使用Laravel和cURL解决API中缺少的grant_type参数值

时间:2019-02-03 10:22:29

标签: php laravel api curl

我正在创建一个网站以查看通过API提供给我的结果。因此,首先,我从邮递员生成了访问令牌,然后将其包含在API标头中。然后,我尝试使用cURL生成访问令牌。但是,它总是给我以下错误。

  

{#480▼+“ error_description”:“缺少grant_type参数值”
  +“错误”:“ invalid_request”}

我该如何解决??

这是我用来生成访问令牌的控制器。 (AccessToken.php)

public function authticate(){

        $tokengen = "base64(clientid:clientsecret)";

        $url = 'http://api.gate.com.:8254/token?=';
        $tokengenheaders = array(
            'grant_type: client_credential',
            'Content-Type: application/x-www-form-urlencoded',
            'Authorization: Basic '.$tokengen

        );

        $ch2 = curl_init();
        curl_setopt($ch2, CURLOPT_URL, $url);
        curl_setopt($ch2, CURLOPT_HTTPHEADER, $tokengenheaders);
        curl_setopt($ch2, CURLOPT_POST, true);
        curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);

        $tokenid = curl_exec($ch2);
        curl_close($ch2);

        return $tokenid;

    }

这里是具有API的控制器。(SLAPIControoler.php)

public function SearchSchedule(Request $request)
    {
        $StartCity = $request->input('StartCity');
        $EndCity = $request->input('EndCity');
        $StartDate = $request->input('StartDate');
        $StartTime = $request->input('StartTime');
        $EndTime = $request->input('EndTime');
        $Lang = 'en';

        $auth = new AccessToken();
        $authtoken = json_decode($auth->authticate());
//        dd($authtoken); die();

        $url = "http://api.gate.com:8253/bus/1.0/searchTrain?startStationID=".$StartCity."&endStationID=".$EndCity."&searchDate=".$StartDate."&startTime=".$StartTime."&endTime=".$EndTime."&lang=".$Lang;

        $headers2 = array(
            'Authorization: Bearer ' . $authtoken,
            'Content-Type: application/json'
        );

        $ch2 = curl_init();
        curl_setopt($ch2, CURLOPT_URL, $url);
        curl_setopt($ch2, CURLOPT_HTTPHEADER, $headers2);
        curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
        //curl_setopt($ch2, CURLOPT_POSTFIELDS, json_encode($decodedjsonarray));
        // echo(curl_exec($ch2));

        $results = json_decode(curl_exec($ch2));
        curl_close($ch2);

        dd($results); die();

        //$GetCities = DB::table('airports')->get();
        //$resultsets = array("data" => $results, "totaltravlers" => $AllThePassengers, "faredetails" => $revalidationarray, "GetCities" => $GetCities);

        //return view('Metro.reviewpage')->with('resultsets', $resultsets);

    }

0 个答案:

没有答案