У меня возникла небольшая проблема с 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 я уже говорил вам в более раннем вопросе