Невозможно сохранить Instagram API access_token с PHP - PullRequest
3 голосов
/ 25 декабря 2011

Я работаю над созданием небольшого веб-приложения, подключающегося к API Instagram. В настоящее время используется эта библиотека на GitHub , что немного упрощает работу. Я могу подключиться и изначально войти в систему нормально, и на странице будут отображаться все пользовательские данные.

Но как только вы обновляете страницу, все данные теряются, и кажется, что скрипт больше не может найти мой токен доступа. Я попытался сохранить это в переменной сеанса PHP - но, возможно, я делаю весь процесс неправильно? Я просто хочу сохранить один и тот же сеанс пользователя на всем веб-сайте после выполнения OAuth.

Вы можете посмотреть маленькое приложение здесь: http://spyrestudios.com/demos/instagram-api/index.php

Кроме того, мой URL обратного вызова: http://spyrestudios.com/demos/instagram-api/instagammy.php - это скрипт, который будет работать сразу после подключения. Но попробуйте обновить страницу, и все данные исчезли! Также вот мой фрагмент кода, который * должен использовать библиотеку для хранения токена доступа текущего пользователя:

session_start();
require_once 'Instagram.php'; // the library code
$config = array(
    'client_id' => 'f0d225aa955c4bd9ae563f87f831efab', // Your client id
    'client_secret' => '377b77afc1274a89bd2df7d77e934689', // Your client secret
    'grant_type' => 'authorization_code',
    'redirect_uri' => 'http://spyrestudios.com/demos/instagram-api/instagammy.php', // The redirect URI you provided when signed up for the service
 );
// Instantiate the API handler object
$instagram = new Instagram($config);
$accessToken = $instagram->getAccessToken();
$_SESSION['InstagramAccessToken'] = $accessToken;

Действительно борется за решение, поэтому я был бы признателен за любую помощь, которую я могу получить. Готов выложить примеры моего кода, если это необходимо ..

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 08 февраля 2012

На тот случай, если вам все еще не все равно.

Проблема в том, что при обновлении или при возврате происходит повторное попадание на целевую страницу oauth, но для нее нет разрешения на сбор информации.Теоретически вы можете просто обернуть настройку переменной сеанса вокруг проверки:

$instagram = new Instagram($config);
$accessToken = $instagram->getAccessToken();
if ($accessToken != '')
    $_SESSION['InstagramAccessToken'] = $accessToken;

Это предотвратит нежелательный вызов вашей целевой страницы oauth от очистки текущего значения сеанса.

Но лучше было бы перенаправить целевую страницу на другую страницу для отображения.т. е. закончить там свой instagammy.php и добавить

header("Location: http://spyrestudios.com/demos/instagram-api/dosomethinghere.php");
die();

Таким образом, пользователь никогда не увидит страницу «instagammy.php» в своей истории и не сможет вернуться к ней.

1 голос
/ 03 февраля 2014

Это работает для меня, вместо оригинального файла instagammy.php

$instagram = new Instagram($config);
if ($_SESSION['InstagramAccessToken'] == ''){
    $accessToken = $instagram->getAccessToken();
    $_SESSION['InstagramAccessToken'] = $accessToken;
}else{
    $accessToken = $_SESSION['InstagramAccessToken'];
    $instagram->setAccessToken($_SESSION['InstagramAccessToken']);
}
1 голос
/ 25 декабря 2011

То, что у вас уже хорошо выглядит (хотя у меня нет опыта работы с Instagram), если предположить, что $ accessToken действительно правильно хранится в сеансе.

Но, безусловно, в какой-то момент вам необходимо получить обратную связь в $accessToken, чтобы его можно было проверить.Как я уже сказал, я раньше не пользовался Instagram, поэтому не знаю, как вы это сделаете.

...