"Traceback (most recent call last):
File "/home/oimara/google_appengine/google/appengine/ext/webapp/_webapp25.py", line 703, in __call__ handler.post(*groups) File "/home/oimara/projects/06_hello_browser_based_upload/upload.py", line 89, in post self.server_response = self.client.GetFormUploadToken(video_entry) File "/home/oimara/projects/06_hello_browser_based_upload/gdata/youtube/service.py", line 691, in GetFormUploadToken raise YouTubeError(e.args[0])YouTubeError: {'status': 401, 'body': "<?xml version='1.0' encoding='UTF-8'?><errors><error><domain>yt:authentication</domain><code>Unknown</code></error></errors>", 'reason': ''}"
Can someone pls advise on this error: Thanks
Here is the code for i am using
import wsgiref.handlers
import urllib
import cgi
from google.appengine.ext import webapp
from google.appengine.api import users
from google.appengine.ext import db
import gdata.service
import gdata.youtube
import gdata.youtube.service
import gdata.media
import gdata.geo
import gdata.urlfetch
from pprint import pprint as px
gdata.service.http_request_handler = gdata.urlfetch
class StoredToken(db.Model):
user_email = db.StringProperty(required=True)
session_token = db.StringProperty(required=True)
developer_key = db.StringProperty()
class Upload(webapp.RequestHandler):
def __init__(self):
self.current_user = None
self.token_scope = None
self.client = None
self.token = None
self.feed_url = 'http://gdata.youtube.com/feeds/api/users/default/uploads'
self.youtube_scope = 'http://gdata.youtube.com'
self.server_response = None
def post(self):
self.my_app_domain = 'http://' + self.request._environ['HTTP_HOST']
self.response.out.write("""<html><head><title>
hello_browser_based_upload: Browser based upload demo</title>
<link type="text/css" rel="stylesheet" href="/stylesheets/main.css" />
</head>""")
# Get the current user
self.current_user = users.GetCurrentUser()
self.client = gdata.youtube.service.YouTubeService()
self.response.out.write('<body>')
# logic
if self.LookupToken() and self.LookupDevKey():
video_title = cgi.escape(self.request.get('video_title'))
video_description = cgi.escape(self.request.get('video_description'))
video_category = cgi.escape(self.request.get('video_category'))
video_tags = cgi.escape(self.request.get('video_tags'))
my_media_group = gdata.media.Group(
title = gdata.media.Title(text=video_title),
description = gdata.media.Description(description_type='plain',
text=video_description),
keywords = gdata.media.Keywords(text=video_tags),
category = gdata.media.Category(
text=video_category,
scheme='http://gdata.youtube.com/schemas/2007/categories.cat',
label=video_category),
player=None
)
video_entry = gdata.youtube.YouTubeVideoEntry(media=my_media_group)
try:
self.server_response = self.client.GetFormUploadToken(video_entry)
except gdata.service.RequestError, request_error:
self.response.out.write('<div id="error">')
self.response.out.write(request_error[0]['status'])
self.response.out.write(request_error[0]['body'])
if request_error[0]['reason']:
self.response.out.write(request_error[0]['reason'])
self.response.out.write(
'<br /><a href="/" style="color: #000">'
'click here to return</a></div>')
return
post_url = self.server_response[0]
youtube_token = self.server_response[1]
self.response.out.write("""<div id="file_upload">Upload your video file
<br /><br />
<form action="%s?nexturl=%s" method="post"
enctype="multipart/form-data">
<input name="file" type="file" size="50"/>
<input name="token" type="hidden" value="%s"/>
<br /><input value="Go" type="submit" />
</form></div>""" % (post_url, self.my_app_domain, youtube_token))
else:
self.redirect("/")
def LookupDevKey(self):
if self.current_user:
stored_tokens = StoredToken.gql('WHERE user_email = :1',
self.current_user.email())
for token in stored_tokens:
if token.developer_key:
self.client.developer_key = token.developer_key
return True
def LookupToken(self):
if self.feed_url and self.current_user:
stored_tokens = StoredToken.gql('WHERE user_email = :1',
self.current_user.email())
for token in stored_tokens:
self.client.auth_token = token.session_token
return True
def main():
application = webapp.WSGIApplication([('/.*', Upload),], debug=True)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
You received this message because you are subscribed to the Google Groups "YouTube APIs Developer Forum" group.
To view this discussion on the web visit https://groups.google.com/d/msg/youtube-api-gdata/-/at7h6eI7K30J.
To post to this group, send email to youtube-api-gdata@googlegroups.com.
To unsubscribe from this group, send email to youtube-api-gdata+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/youtube-api-gdata?hl=en.
No comments:
Post a Comment