غير قادر على ترقية رمز جلسة YouTube دون تسجيل الدخول إلى API API حسابات Google
-
25-09-2019 - |
سؤال
أواجه مشكلة في ترقية رمز الجلسة الخاص بي في محرك تطبيق Google إذا لم يتم تسجيل الدخول إلى طلبي باستخدام واجهة برمجة تطبيقات مستخدم حسابات Google. إذا تم تسجيل الدخول حاليًا ، فإنه يعمل بشكل مثالي.
إذا لم يكن الأمر كذلك ، فأنا أحصل على هذا الخطأ:
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
ما هي أفضل خياراتي هنا؟ لا أريد أن يضطر المستخدم إلى تسجيل الدخول إلى واجهة برمجة تطبيقات حسابات Google ثم موقع YouTube لتحميل مقطع فيديو.
هذه هي طريقتي لتحديث الرمز المميز:
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 = gdata.youtube.service.YouTubeService()
متأكد من أنني أفتقد شيئًا على جانب المصادقة ، لكن لا يمكنني أن أرى ماذا ، شكرًا!
المحلول
لقد حللت هذا باستخدام:
client.UpgradeToSessionToken(gdata.auth.extract_auth_sub_token_from_url(self.request.url))
لكن هذا أثار قضية أخرى عند بناء نموذج التحميل مع
GetFormUploadToken
انا اتلقى:
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': ''}
نصائح أخرى
جرب هذا:
new_token = client.UpgradeToOAuthAccessToken(
gdata.auth.extract_auth_sub_token_from_url(self.request.url)
client.SetOAuthToken(new_token)
client.GetFormUploadToken(my_video_entry)
لا تنتمي إلى StackOverflow