Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么http post请求不是';在狂饮时不工作,但在卷曲时工作良好_Php_Laravel_Curl_Laravel 5_Guzzle - Fatal编程技术网

Php 为什么http post请求不是';在狂饮时不工作,但在卷曲时工作良好

Php 为什么http post请求不是';在狂饮时不工作,但在卷曲时工作良好,php,laravel,curl,laravel-5,guzzle,Php,Laravel,Curl,Laravel 5,Guzzle,我正在向github o auth发送请求以获取用户的访问令牌,并尝试使用guzzle,但响应没有任何值我不知道为什么,另一方面,当我使用curl时,它工作正常并成功返回访问令牌, 我用guzzle的form_parms设置字段 这里是狂饮的例子 public function fetchGithubToken(\Illuminate\Http\Request $request, $code) { $client = new \GuzzleHttp\Client();

我正在向github o auth发送请求以获取用户的访问令牌,并尝试使用guzzle,但响应没有任何值我不知道为什么,另一方面,当我使用curl时,它工作正常并成功返回访问令牌, 我用guzzle的form_parms设置字段

这里是狂饮的例子

public function fetchGithubToken(\Illuminate\Http\Request $request, $code)
    {


        $client = new \GuzzleHttp\Client();

        $response = $client->request('POST', 'https://github.com/login/oauth/access_token', [

            'form_params' => ['client_id' => env('GITHUB_CLIENTID'), 'client_secret' => env('GITHUB_CLIENT_SECRET'), 'code' => $code],
        ]);

        Log::error(print_r($response, true));
        return $response;


    }
下面是curl示例

    public function post_to_url($url, $data)
{
    $fields = '';
    foreach ($data as $key => $value) {
        $fields .= $key . '=' . $value . '&';
    }
    rtrim($fields, '&');

    $post = curl_init();

    curl_setopt($post, CURLOPT_URL, $url);
    curl_setopt($post, CURLOPT_POST, count($data));
    curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
    curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);

    $result = curl_exec($post);

    curl_close($post);

    return $result;

}

public function fetchGithubToken(\Illuminate\Http\Request $request, $code)
{

    $data = ['client_id' => env('GITHUB_CLIENTID'), 'client_secret' => env('GITHUB_CLIENT_SECRET'), 'code' => $code];

    $response = $this->post_to_url("https://github.com/login/oauth/access_token", $data);

    Log::info(print_r($response, true));

    return $response;
}

您必须在cURL中添加身份验证。您必须使用以下语句,因为github需要身份验证:

curl_setopt($process, CURLOPT_USERPWD, $data['username'] . ":" . $data['$password']);

希望这有帮助。

要获得正文,请使用
return(string)$response->getBody()
@Abhishek感谢它的工作