Unfähig YouTube-Sitzung ohne Anmeldung in Google-Konten Benutzer API-Token zu aktualisieren
-
25-09-2019 - |
Frage
Ich habe Probleme beim Upgrade meiner Session-Token in Google App Engine, wenn meine Benutzer nicht in meine Anwendung mit dem Google angemeldet ist, Benutzerkonten api. Wenn der Benutzer zur Zeit in dann angemeldet ist, es funktioniert perfekt.
Wenn nicht, dann ich diese Störung erhalten:
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
Was sind meine besten Optionen hier? Ich will nicht der Benutzer haben, in die Google-Konten einzuloggen api und dann die YouTube-Website ein Video hochladen.
Hier ist meine Methode für das Token zu aktualisieren:
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 ist einfach client = gdata.youtube.service.YouTubeService()
ziemlich sicher, ich bin etwas auf der Authentifizierungsseite fehlt, aber ich kann nicht zu sehen scheinen, was, danke!
Lösung
Ich löste dies durch die Verwendung:
client.UpgradeToSessionToken(gdata.auth.extract_auth_sub_token_from_url(self.request.url))
aber eine andere Frage aufgeworfen beim Bau der Upload-Formular mit
GetFormUploadToken
i erhalten:
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': ''}
Andere Tipps
Versuchen Sie diese:
new_token = client.UpgradeToOAuthAccessToken(
gdata.auth.extract_auth_sub_token_from_url(self.request.url)
client.SetOAuthToken(new_token)
client.GetFormUploadToken(my_video_entry)