Запрос API YouTube: Как я могу получить токен Right (о коде Джима С.) - PullRequest
2 голосов
/ 06 декабря 2011

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

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

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

URL, который я получил:

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

и codeIgniter не преуменьшают значение “/” и не перенаправляют меня к функции example/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

так что это значит, что я не получаю одинаковые переменные ... почему? как я мог получить эти переменные вместо той, что получил? Они одинаковые?

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

  • -Сообщение: неопределенный индекс: oauth_token
  • -Сообщение: неопределенный индекс: oauth_token_secret

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

Спасибо:)

1 Ответ

1 голос
/ 06 декабря 2011

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

  1. oauth_verifier
  2. oauth_token

oauth_verifier код - это один Google, который отправит вас обратно, если пользователь авторизует ваше приложение для доступа к его / ее профилю, поэтому вам нужен этот верификатор, чтобы получить 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 в каком-то месте, вы можете выбрать 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

надеюсь, вам ясно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...