reCapche v3 возвращает не валидный JSON

Устанавливаю на сайт reCapthe v3. За основу взял код

# BEGIN Setting reCaptcha v3 validation data
  $url = "https://www.google.com/recaptcha/api/siteverify";
  $data = [
    'secret' => SECRET_KEY,
    'response' => $_POST['g-recaptcha'],
    'remoteip' => $_SERVER['REMOTE_ADDR']
  ];

  $options = array(
    'http' => array(
      'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
      'method'  => 'POST',
      'content' => http_build_query($data)
    )
  );
  
  $context  = stream_context_create($options);
 
  $response = file_get_contents($url, false, $context);
 
  $res = json_decode($response, true);


  var_dump($response);

  if ($res['success'] == true && $res['score'] >= 0.5) {
    
      //My code
  }

Token приходит корректно, передаю его в PHP и отправляю по инструкции, в ответ возвращается не валидный JSON: при попытке распарсить его через json_decode выдает ошибку "FATAL ERROR syntax error, unexpected 'success' (T_STRING) on line number 4". Вывожу его в var_dump

string(142) "{
  "success": true,
  "challenge_ts": "2021-11-08T14:21:39Z",
  "hostname": "mySite",
  "score": 0.9,
  "action": "homepage"
}"

Понимаю, что все дело в первых и последних двойных кавычках, если бы все было обернуто в одинарные, то проблемы бы не было, но как преобразовать полученный JSON в валидный я не понимаю(работать с результатом как со строкой не получается, преобразовать его в JSON и обратно тоже, заменить кавычки на одинарные тоже не получается). Подскажите, что делаю не так? Может я передаю не корректные заголовки при запросе или есть какая то дополнительная настройка при получении строки JSON от стороннего ресурса?


Ответы (0 шт):