Веб-сайт, который я создаю, позволяет связать вашу учетную запись с вашей учетной записью 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