2010-05-10 24 views
1

Je n'arrive pas à mettre à jour mon jeton de session dans google app engine si mon utilisateur n'est pas connecté à mon application à l'aide de l'API google accounts user. Si l'utilisateur est actuellement connecté, il fonctionne parfaitement.Impossible de mettre à niveau le jeton de session YouTube sans se connecter à l'API utilisateur des comptes Google

Sinon je reçois cette erreur:

Traceback (most recent call last): 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 511, in __call__ 
    handler.get(*groups) 
    File "/base/data/home/apps/5th-anniversary/1.341853888797531127/main.py", line 78, in get 
    u.upgradeToken(self) 
    File "/base/data/home/apps/5th-anniversary/1.341853888797531127/upload.py", line 47, in upgradeToken 
    client.UpgradeToSessionToken() 
    File "/base/data/home/apps/5th-anniversary/1.341853888797531127/gdata/service.py", line 903, in UpgradeToSessionToken 
    raise NonAuthSubToken 
NonAuthSubToken 

Quelles sont les meilleures options ici? Je ne veux pas que l'utilisateur doive se connecter à l'API google google, puis au site YouTube pour télécharger une vidéo.

ici est ma méthode pour la mise à jour du jeton:

def upgradeToken(data,self): 
    get = self.request.GET 
    authsub_token = get['token'] 

    gdata.alt.appengine.run_on_appengine(client) 

    client.SetAuthSubToken(authsub_token) 
    client.UpgradeToSessionToken() 

client est tout simplement client = gdata.youtube.service.YouTubeService()

assez sûr que je me manque quelque chose du côté d'authentification, mais je ne peux pas l'impression de voir ce que, grâce !

Répondre

0

Je résolu ce problème en utilisant:

client.UpgradeToSessionToken(gdata.auth.extract_auth_sub_token_from_url(self.request.url)) 

mais cela a soulevé une autre question lors de la construction sous forme de téléchargement avec

GetFormUploadToken 

je reçois:

Traceback (most recent call last): 
    File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 513, in __call__ 
    handler.post(*groups) 
    File "/base/data/home/apps/5th-anniversary/1.341859541699944556/upload.py", line 106, in post 
    form = u.getUploadForm(self,title,description,keywords) 
    File "/base/data/home/apps/5th-anniversary/1.341859541699944556/upload.py", line 65, in getUploadForm 
    response = client.GetFormUploadToken(video_entry,'http://gdata.youtube.com/action/GetUploadToken') 
    File "/base/data/home/apps/5th-anniversary/1.341859541699944556/gdata/youtube/service.py", line 716, in GetFormUploadToken 
    raise YouTubeError(e.args[0]) 
YouTubeError: {'status': 401L, 'body': '<HTML>\n<HEAD>\n<TITLE>User authentication required.</TITLE>\n</HEAD>\n<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n<H1>User authentication required.</H1>\n<H2>Error 401</H2>\n</BODY>\n</HTML>\n', 'reason': ''} 
0

Essayez ceci:

new_token = client.UpgradeToOAuthAccessToken(
    gdata.auth.extract_auth_sub_token_from_url(self.request.url) 
client.SetOAuthToken(new_token) 
client.GetFormUploadToken(my_video_entry)