غير قادر على ترقية رمز جلسة YouTube دون تسجيل الدخول إلى API API حسابات Google

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

سؤال

أواجه مشكلة في ترقية رمز الجلسة الخاص بي في محرك تطبيق 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)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top