YouTube работает с localhost, но не с производства - PullRequest
0 голосов
/ 20 января 2012

Веб-сайт, который я создаю, позволяет связать вашу учетную запись с вашей учетной записью YouTube. С localhost это работает отлично, но с сайта step1tuts.appspot.com это не работает. Когда я перенаправляю пользователя на страницу аутентификации с моего сайта, я получаю следующее сообщение:

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

Код, который обрабатывает эту аутентификацию, выглядит следующим образом:

client = youtube.get_client()

client.developer_key = 'AI39si759T7YcZ4E3XvICpZr3cGwQ0Ev4AjwyJrVSS6AW6NUc7_t10DX1JsngWzU4YoGjpsjAUTejav0hgXp9vDuM7a83tDXzQ'
client.client_id = 'step1tuts.com'

domain = 'http://' + os.environ['HTTP_HOST']+"/user/youtube_token"
scope = 'http://gdata.youtube.com'
url = client.GenerateAuthSubURL(domain,scope,secure=False,session=True)
self.redirect(str(url))
return

URL, на который я перенаправляю, заканчивающийся на / auth_token, затем обрабатывает токен, полученный от youtube, но здесь происходит ошибка.

Просто для ясности, метод youtube.get_client - это метод, который я разработал для повторного использования процесса подготовки клиентского приложения: код для этого:

def get_client():
    client = gdata.youtube.service.YouTubeService()
    run_on_appengine(client)

    client.developer_key = 'AI39si759T7YcZ4E3XvICpZr3cGwQ0Ev4AjwyJrVSS6AW6NUc7_t10DX1JsngWzU4YoGjpsjAUTejav0hgXp9vDuM7a83tDXzQ'
    client.client_id = 'step1tuts.com'
    user = users.get_current_user()
    if(user and user.yt_token):
        client.SetAuthSubToken(user.yt_token)
    return client

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

Проблема должна быть отслежена путем просмотра URL-адреса, на который перенаправлен пользователь, поэтому просто для дополнительной информации - URL-адрес, на который я перенаправлен, когда я использую приложение на своем локальном компьютере с использованием SDK, с помощью который это работает:

http://www.youtube.com/auth_sub_request?scope=http%3A%2F%2Fgdata.youtube.com&session=1&next=http%3A%2F%2Flocalhost%3A8081%2Fuser%2Fyoutube_token%3Fauth_sub_scopes%3Dhttp%253A%252F%252Fgdata.youtube.com&secure=0&hd=default

И URL, на который я перенаправляюсь, когда использую тот же код на производстве:

http://www.youtube.com/auth_sub_request?scope=http%3A%2F%2Fgdata.youtube.com&session=1&next=http%3A%2F%2Fstep1tuts.appspot.com%2Fuser%2Fyoutube_token%3Fauth_sub_scopes%3Dhttp%253A%252F%252Fgdata.youtube.com&secure=0&hd=default

1 Ответ

1 голос
/ 28 января 2012

Интересно. Все остальные URL работают, кроме этого. Вероятно, ошибка на стороне YouTube? Я просто добавил "." в конце вашего домена и запрос, кажется, проходит. Может быть, вы можете попробовать это?

http://www.youtube.com/auth_sub_request?scope=http%3A%2F%2Fgdata.youtube.com&session=1&next=http%3A%2F%2Fstep1tuts.appspot.com.%2Fuser%2Fyoutube_token%3Fauth_sub_scopes%3Dhttp%253A%252F%252Fgdata.youtube.com&secure=0&hd=default

...