json — PHP переменные json_decode не устанавливаются

ОБНОВИТЬ:

Я буду честен, я сдался и сделал это в sails.js, в конце я оставлю этот вопрос на тот случай, если кто-нибудь увидит, где я ошибся.


интересно, может ли кто-нибудь помочь мне с чем-то странным, что я не могу решить.

У меня есть скрипт oAuth, который возвращает вывод массива json обратно в мое приложение для Android.

У меня проблема с неопределенным индексом по всем переменным json, однако, если я раскомментирую две строки, прокомментированные в моем коде, и посмотрю в браузере, то строка $ hdr будет выглядеть именно так, как должна, именно тогда, когда я пытаюсь вернуться $ hdr в моем заголовке я получаю:

callback://com.herghost.waves?code=&account_name=&refresh_token=&expires_in=

Вот скрипт, который я использую:

error_reporting(E_ALL);
$code = $_GET['code'];
$clientId = "";
$clientSecret = "";
$redirectionUrl = rawurlencode("http://waves-app.com/generate_token.php");
$url = sprintf("https://cloud.digitalocean.com/v1/oauth/token?client_id=%s&client_secret=%s&grant_type=authorization_code&code=%s&redirect_uri=%s", $clientId, $clientSecret, $code, $redirectionUrl);

$fields = array();
$fields_string = "";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, TRUE);

$result = curl_exec($ch);
curl_close($ch);

$json = json_decode($result, TRUE);
//print_r($json);
if (empty($code)) $code = '';
if (empty($name)) $name = '';
if (empty($refresh)) $refresh = '';
if (empty($expires)) $expires = '';

$code = $json['access_token'];
$name = rawurlencode($json["info"]["name"]);
$refresh = $json["refresh_token"];
$expires =  $json["expires_in"];
$hdr = sprintf("Location:callback://com.herghost.waves?code=%s&account_name=%s&refresh_token=%s&expires_in=%s", $code, $name, $refresh,$expires);
//echo $hdr;
header($hdr);

РЕДАКТИРОВАТЬ: другие вещи, которые я сейчас попробовал

1) Установка жестко закодированной строки в sprintf

Location:callback://com.herghost.waves?code=1234&account_name=%s&refresh_token=%s&expires_in=%s"

Я получил правильный код обратно в моем приложении для Android

2) Установка переменной вручную и передача этого

$test = 'test'
header(sprintf("Location:callback://com.herghost.waves?code=%s&account_name=%s&refresh_token=%s&expires_in=%s",
$test, rawurlencode($json["info"]["name"]), $json["refresh_token"]//, $json["expires_in"]));

Я получаю тест, вернись в приложение для Android!

Я также проверил, есть ли ошибки скручивания, используя

if(curl_errno($ch))
{
echo 'Curl error: ' . curl_error($ch);
}

Нет ошибок.

var_dump определенно выводит результаты, так почему мои переменные пусты ?!

ДРУГОЕ РЕДАКТИРОВАНИЕ

Итак, я попробовал это:

$test = '45678';
$test2 = $json["refresh_token"];
$jsonerr = json_last_error();


echo $test2;
if($jsonerr == 0)
{
header("Location:callback://com.herghost.waves?code=" . $test2 . "+" . $test . "&account_name=1&refresh_token=2&expires_in=3");
}
else
{
header("Location:callback://com.herghost.waves?code=error&account_name=1&refresh_token=2&expires_in=3" . $jsonerr);
}

и мой ответ:

callback://com.herghost.waves?code=+45678&account_name=1&refresh_token=2&expires_in=3

Никогда не чувствовал себя таким разъяренным из-за простого куска кода!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]