Impossible de mettre à jour jeton de session YouTube sans se connecter à un compte Google API utilisateur

StackOverflow https://stackoverflow.com/questions/2803996

Question

Je ne parviens pas à mettre à jour mon jeton de session dans le moteur Google App si mon utilisateur n'est pas connecté à mon application à l'aide les comptes utilisateur de Google api. Si l'utilisateur est connecté il fonctionne parfaitement.

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 doit se connecter au compte Google api et le site YouTube pour télécharger une vidéo.

Voici 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 quoi, merci!

Était-ce utile?

La solution

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': ''}

Autres conseils

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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top