Я пытаюсь получить электронную почту моего пользователя с помощью google api & curl, и я застрял на обмене токена доступа. Я получаю ключ без проблем, но когда дело доходит до токена, Google просто возвращает JSON
{"error" : "invalid_request"}
ниже приведен фрагмент кода, который выкупает код для токена (по крайней мере, так и должно быть)
$code = urlencode($_GET["code"]);
$secret = "MYSECRET";
$client_id = "MYCLIENTID";
$redirect_uri = urlencode("http://www.mysupersite.com/callback.html");
$grant_type = "authorization_code";
$url = "https://accounts.google.com/o/oauth2/token";
$headers = array("Content-type: application/x-www-form-urlencoded");
$post = "code=".$code."&client_id=".$client_id."&secret=".$secret."&redirect_uri=".$redirect_uri."&grant_type=".$grant_type;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_VERBOSE, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$json = curl_exec($curl);
curl_close($curl);
var_dump($json);
Я действительно застрял, и Google API никогда не говорит вам, что именно не так.
UPD Я знаю, что есть библиотека для такого рода вызовов, но я решаю одну простую задачу (в соответствии с документацией Google API) и просто не вижу смысла в том, чтобы загружать другие методы.