【发布时间】:2018-06-14 10:52:07
【问题描述】:
我正在向 github o auth 发送请求以获取用户的访问令牌并尝试使用 guzzle 但响应没有任何价值我不知道为什么,另一方面当我使用curl 它工作正常并成功返回了访问令牌, 我正在使用 guzzle 中的 form_parms 来设置字段
这里是 guzzle 示例
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;
}
【问题讨论】:
-
获取正文使用
return (string)$response->getBody() -
@Abhishek 谢谢它的工作
标签: php laravel curl laravel-5 guzzle