Intereting Posts
Полиморфные многие для многих от пользователя до публикации и категории Ошибка при использовании PHP для iPhone APNS Настроить автоматическое создание Post Slug в WordPress Удаленный доступ Xampp fwrite (): операция SSL завершилась неудачно с кодом 1. OpenSSL Сообщения об ошибках: \ nerror: 1409F07F: Подпрограммы SSL: SSL3_WRITE_PENDING: неудачная попытка записи в PHP Создание прокси для подмены iPhone-агента пользователя в PHP? Вход только в том случае, если пользователь активен, используя Laravel method_exists в родительском классе php Проблемы с объектом stdClass Добавление разрыва в название продукта на страницах магазина на определенную длину неограниченные параметры получают последний Правильный способ передачи сложных переменных в javascript через HTML Утечка и вилка памяти PHP удалить массив «wrapping» (удалить родительский, сохранить дочерние элементы) Php многоязычная дата: howto?

Google Oauth для YouTube: почему я получаю код «Undefined index: oauth_token» (код Jim S.)

У меня возникла небольшая проблема с OAuth для Google, я использую Jim Saunder Libraire для CodeIgniter (http://codeigniter.com/wiki/OAuth_for_Google), но когда я пришел к своей функции access_youtube, которая выглядит так:

public function access_youtube() { //STEP 2 // Here is the first call to load the library $params['key'] = 's390075769.onlinehome.fr'; $params['secret'] = 'iHD72YKzWmbm8VTwncht_E-d'; // We can change the signing algorithm and http method by setting the following in your params array. $params['algorithm'] = 'HMAC-SHA1'; // $params['method'] = "GET"; // We need to reload the library since we left our site beetween Step 1 & 2. $this->load->library('google_oauth', $params); // We are using HMAC signing you need to specify the token_secret you got from the request step as the second parameter of this method. So $token_secret = $this->session->userdata('token_secret'); $oauth = $this->google_oauth->get_access_token(false, $token_secret); // The access method will return an array with keys of 'oauth_token', and 'oauth_token_secret' // These values are your access token and your access token secret. We should store these in our database. $this->session->set_userdata('oauth_token', $oauth['oauth_token']); $this->session->set_userdata('oauth_token_secret', $oauth['oauth_token_secret']); // Now you have an access token and can make google service requests on your users behalf redirect(site_url()); } 

У меня появилось несколько сообщений об ошибках:

Неопределенный индекс: oauth_token

Неопределенный индекс: oauth_token_secret

которые ссылаются на строки $ this-> session-> set_userdata …

и после каждого сообщения об ошибке я получаю:

Сообщение: не удается изменить информацию заголовка – заголовки, уже отправленные (вывод запущен в /homepages/7/d390075755/htdocs/system/core/Exceptions.php:170) Имя файла: libraries / Session.php Номер строки: 671

который, я думаю, связан с предыдущим сообщением об ошибке.

поэтому я попробовал это в конструкторе:

 class Example extends CI_Controller { private $CI; public function __construct() { parent::__construct(); $this->CI =& get_instance(); $this->CI->load->library('session'); $oauth = array(); $oauth['oauth_token_secret']=''; $oauth['oauth_token']=''; } 

как раз перед моей функцией, но это ничего не делает .. и я боюсь, что у меня потерял свой счет переменных сеанса Google … не правда ли? Получать ли я мои токены из Google?

Честно говоря, я не уверен, как сеанс будет управляться PHP-кодом, поэтому вам мало поможет. Кажется, что эта линия является причиной

 $oauth = $this->google_oauth->get_access_token(false, $token_secret); 

вы пытаетесь получить access_token из Google, чтобы отправить запрос в Google API, чтобы получить информацию о пользователях, которые когда-либо разрешали ваше приложение, и я думаю, что Google не возвращает ожидаемое от них. это может быть связано с несоответствием типа в данных запроса, как то, что Google Oauth ожидает от вас и что вы действительно отправляете

В вашем случае я бы использовал отладчик моего Eclipse, чтобы узнать, что именно происходит, но для OAuth я уже говорил вам в более раннем вопросе

  1. Вам нужно сохранить этот токен, который вы получаете на первом шаге.
  2. Как только ваш пользователь вернется из проверки подлинности, вам нужно получить access_token, используя этот токен запроса
  3. После того, как у вас есть токен запроса, вы готовы сделать окончательный вызов API, и кажется, что некоторые, как ваш код не может получить данные с сеанса