Запрос API YouTube: как я мог получить правильный токен (о коде Jim S.)

Я пытаюсь реализовать YouTube API на моем сайте CodeIgniter. Я следовал инструкциям Джима Сондерса здесь:

и здесь: http://codeigniter.com/wiki/OAuth_for_Google/ (примерно то же самое)

SO, прежде всего, мне нужно было получить секретный токен с помощью функции request_youtube , эта функция работает правильно, я ввел свой потребительский ключ и потребительский секрет из Google, и все в порядке. Итак, я перенаправлен на YouTube, чтобы разрешить доступ к YouTube, но когда я перенаправлен на мой сайт, у меня есть две проблемы:

Url я получил:

mywebsite/example/access_youtube=&oauth_verifier=6wbPcxlOAmYQwaDU7HIhz38B&oauth_token=1/6Nfchy_nM-j4vxQzhAWTuc1J20L02bBNdcZasQP-e0s

и codeIgniter не codeIgniter значение “/” и не перенаправляет меня на функцию example/access_youtube Если я example/access_youtube ее вручную, то я access_youtube к моей функции access_youtube с моими параметрами, но вот вторая (фатальная) проблема, которую я получил:

Во-первых, вот мои две переменные, которые я получил от URL:

 oauth_verifier=6wbPcxlOA************ & oauth_token=1/6Nfchy_nM-j4vxQzhAWTuc1J20L02b*********** 

но на игровой площадке google Oauth (которую вы сможете найти здесь: http://googlecodesamples.com/oauth_playground/) Я должен получить что-то вроде этого:

 oauth_token=1/P9o-yO1Czz1q67pvPm**********************iMI& oauth_token_secret=CzeSat342hO5HzswJEq94ZPH&oauth_callback_confirmed=true 

так что я имею в виду, что я не получал одинаковых переменных … почему? как я могу получить переменные thoses вместо того, что я получил? Они одинаковы ?

Во-вторых, я получил несколько ошибок в моей функции access_Youtube, CI скажет:

  • -Message: Неопределенный индекс: oauth_token
  • -Message: Неопределенный индекс: oauth_token_secret

поэтому он не получает информации из заголовка … Я действительно не знаю, как это сделать, я следовал инструкциям Джима, но я как бы застрял там, кто-нибудь, кто пытался реализовать OAuth доступ на его сайте имеет представление?

Спасибо 🙂

Хорошо, что вы делаете, пока не получите перенаправление обратно из Google, совершенно правильно.

  1. oauth_verifier
  2. oauth_token

oauth_verifier код – это один из них, который отправляет вас обратно, если пользователь разрешает вашему приложению получать доступ к своему профилю, поэтому вам нужен этот верификатор, чтобы получить AccessToken с помощью токена доступа, который вы сможете получить доступ к профилю / дате пользователя, какой бы объем вы ни определили.

 oauth_token 

это связано с вашим приложением, и Google идентифицирует вас с этим, он останется таким же для вашего приложения

поэтому, когда вы получаете AccessToken из google / you tube API, вызывая что-то вроде

 Token token=authGetRequestToken.getRequestToken(service); 

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

 Token accessToken = authGetAccessToken.getAccessToken((Token) session.get(OAuthConstants.REQUEST_TOKEN), verifier); 

и как только вы получите этот accessToken вы с радостью пойдете

надеюсь, что это имеет смысл

edit1

Verification_code отправляется системой OAuth, чтобы указать, что пользователь предоставил доступ и авторизуется сам. Это только часть механизма установления связи.

я просмотрел страницу, о которой упоминалось здесь, – это то, что было упомянуто здесь

 $response = $this->google_oauth->get_request_token(site_url("/user/youtube_access")); $this->_store_somewhere($response['token_secret']); 

Поэтому в token_secret то месте просят хранить token_secret , вы можете выбрать DB или сеанс, какой бы вы ни выбрали, поскольку этот token_secret будет использоваться для повторного восстановления запроса на более позднем этапе

в моем примере кода я сохранил весь Request_Token который содержит token_secret и oauth_token

Когда пользователь перенаправляется обратно в ваше приложение, вам необходимо выполнить следующие шаги:

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

Здесь мы извлекаем token_secret, который мы сохранили на последнем шаге, и отправляем запрос Google на получение access_token

Я также делаю почти то же самое, передавая верификатор вместе с token_secret

надеюсь, что это ясно для вас