Переменные Spotify pass + URL перенаправления

Для бота, который я программирую, я столкнулся с проблемой:

Резюме и функция

Когда пользователь пишет (в чат-приложении)! spotify:track:someHashЯ звоню java-функция, которая затем вызывает PHP-скрипт.

К вашему сведению: я использую этот git-проект. Я следовал за документация для материала авторизации, и я могу добавить свои треки, когда я жестко закодировал их в своем источнике.

Позвольте мне показать вам важные фрагменты:

if (spotifyTrack.startsWith("spotify")) {

// this might be important, maybe need to change this?
URL url = new URL("http://www.example.com/spot/index.php");

URLConnection con = url.openConnection();
con.setDoOutput(true);
PrintStream ps = new PrintStream(con.getOutputStream());
ps.print("track=" + spotifyTrack);
con.getInputStream();
ps.close();
sendMessage.setText("Song added");
}

Допустим, моя переменная spotifyTrack содержит что-то вроде этого:
spotify:track:06faVvKZVHivuKgL8NUMQr

Итак, я звоню index.php

require 'vendor/autoload.php';

// I'm calling another script here, add.php, you see why down below
$session = new SpotifyWebAPI\Session('My ID','My Secret','http://www.example.com./spot/add.php');
$api = new SpotifyWebAPI\SpotifyWebAPI();

$scopes = array(
'playlist-read-private',
'user-read-private',
'playlist-modify-public'
);

$authorizeUrl = $session->getAuthorizeUrl(array(
'scope' => $scopes
));

header('Location: ' . $authorizeUrl);
die();
// Start using the API!

Это второй сценарий: add.php

require 'vendor/autoload.php';

$session = new SpotifyWebAPI\Session('My Id', 'MY Secret','http://www.example.com/spot/add.php');
$api = new SpotifyWebAPI\SpotifyWebAPI();

$scopes = array(
'playlist-read-private',
'user-read-private',
'playlist-modify-public'
);

$authorizeUrl = $session->getAuthorizeUrl(array(
'scope' => $scopes
));

// Request a access token using the code from Spotify
$session->requestAccessToken($_GET['code']);
$accessToken = $session->getAccessToken();

// Set the access token on the API wrapper
$api->setAccessToken($accessToken);

$track = explode(":", $_POST['track']);

// Start using the API!
$api->addUserPlaylistTracks('my user', 'my playlist id', array(
$track[2],
));

Как вы можете сказать, есть вещи, которые излишни и не самый лучший способ сделать это. Тем не менее, я застрял, так как я не знаю, что делать дальше. Ты должен указать URI перенаправлениях, поэтому я добавил index.php а также add.php.

Проблема: если я вызываю index.php из моей java-программы и меняю URL-адрес в моем index.php на index.php, он заканчивается бесконечным циклом перенаправления.
Однако вызов скрипта add.php приведет к потере POST-data,

Из моего понимания: мне нужно вызвать index.php, мне нужен редирект для получения параметра кода. (Гадание OAuth связано?)

Мой вопрос: Как я могу сохранить POST-данные после перенаправления (с header()) не потеряв мою просьбу?

0

Решение

если вам нужно перенести ваши данные на другую страницу, вы можете использовать сеансы:

session_start();
$_SESSION['post_data'] = $_POST;
1

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

Решения @cKarsten в моих глазах стоят на $_POST['track'] требуется только один раз, и это на странице, на которую перенаправляется. В дальнейшем данные излишне сохраняются.

Я предпочел бы изменить index.php передавая значение $_POST['track'] как получить-параматер app.php, Соответственно в app.php $_POST['track'] должен быть изменен на $_GET['track'],

Я демонстрирую это. Следование небезопасно, но показывает, как я это сделаю.
Измененный код помечается как «// ДОБАВЛЕНО:» в предыдущей строке.

require 'vendor/autoload.php';

// I'm calling another script here, add.php, you see why down below
$session = new SpotifyWebAPI\Session('My ID','My   Secret','http://www.example.com./spot/add.php');
$api = new SpotifyWebAPI\SpotifyWebAPI();

$scopes = array(
'playlist-read-private',
'user-read-private',
'playlist-modify-public'
);

$authorizeUrl = $session->getAuthorizeUrl(array(
'scope' => $scopes
));

// ADDED: if $authorizeUrl contains at least one get-paramater use "&". Otherwise "?". In this sample I am using "&".
$authorizeUrl .= "&track=".$_POST['track'];

header('Location: ' . $authorizeUrl);
die();
// Start using the API!

Не забудьте обновить add.php,

1

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