我的POST邮递员请求与PHP的请求有何不同?我在做什么错了?

时间:2019-05-09 16:02:20

标签: php laravel curl post https

我正在尝试使用第三方作为IdP进行身份验证。这使用标准的OAuth流程,但由于它仍在开发中,因此我不确定它是否已在IdP端正确实现。我正在寻找有关我可能在做错什么方面的指导。

因此我尝试使用curl和guzzle,但两者却获得了不同的结果。

使用Guzzle,我最终收到415错误:

  

客户端错误:POST https://xyz/oauth2/token导致415 Unsupported Media Type响应

有了cURL,我得到了响应

  

“”

尽管有了Postman,我从他们这边获得了错误响应,如下所示:

  

{       “ error_description”:“授予无效;代码错误”,       “错误”:“ invalid_grant”   }

哪个可能是正确的。

这是“狂饮”请求:

        $client = new Client();

        $stream = json_encode(array(
            'code' => $request['code'] ,
            'client_id' => $clientID ,
            'grant_type' => $grant ,
            'redirect_uri' => $redirectURI ,
            'client_secret' => $clientSecret
        ));

        try {
            $r = $client->request('POST', 'https://xyz/oauth2/token?', ['headers' => ['Authorization' => 'Basic base64XxYyZzCredentials==',
                'Content-Type' => 'application/json', 'Accept' => 'application/json'], 'body' => $stream]);
        } catch (ClientException $e) {
             It enters here
        }

这是cURL请求:

        $curl = curl_init();
        $auth = 'Basic ' . base64_encode($clientID . ':' . $clientSecret);


        $headers = [
            'Authorization: ' . $auth,
            'Content-Type: application/json'
        ];

        $stream = json_encode(array(
            'code' => $_REQUEST['code'],
            'client_id' => $clientID ,
            'grant_type' => $grant ,
            'redirect_uri' => $redirectURI ,
            'client_secret' => $clientSecret
        ));

        curl_setopt_array($curl, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_URL => $url,
            CURLOPT_POST => 1,
            CURLOPT_POSTFIELDS => $stream,
            CURLOPT_HTTPHEADER => $headers
        ]);

        $response = curl_exec($curl);
        curl_close($curl);
        dd($response);

使用邮递员,我在主体->表单数据中填充代码,client_id,redirect_uri,client_secret和Grant_type,并在标头中使用Content-Type和Authorization。

我希望从他们的IdP获得令牌,或者至少获得与Postman相同的结果,但是我没有得到。

下一步是嗅探服务器发送的内容,以验证POST是否正确发送,但是如果有人指出我对PHP代码所做的错误操作,我将不胜感激。

0 个答案:

没有答案