मैं Google ऐप इंजन में अपने स्कूल समाचार पत्र के लिए एक कहानी असाइनमेंट सिस्टम को पूरा करने की कोशिश कर रहा हूं। यह लेखकों के लिए समय सीमा ट्रैक करेगा, लेखकों को कहानियां लेने की अनुमति देगा, और हफ्तों की कहानियों के "एक नज़र में" दृश्य दें। मेरे साथी और मैं इसे अपने समाचार पत्रों Google Apps स्थापना के साथ पूरी तरह से एकीकृत करने की कोशिश कर रहे हैं। ओह, और हमें 3 पैर वाले ओथ का उपयोग करना होगा क्योंकि हमारे पास Google Apps प्रीमियर नहीं है।ओथ + एओइड + पायथन + Google ऐप इंजन + Google दस्तावेज़
उस प्रयास में, मैंने एओइड पर ठोकर खाई और संघीय लॉगिन कार्य करने के निर्देशों का पालन करने में सक्षम था। यह बहुत अच्छा है!
जहां मैं परेशानी में भाग रहा हूं, उपयोगकर्ताओं को Google दस्तावेज़ों की सूची प्राप्त करने के लिए ओथ का उपयोग कर रहा है। मेरे पास यहां एक टेस्ट पेज सेट है: mustrun.cornellsun.com/test। यह मुझे त्रुटियां दे रहा है - मैंने उन्हें इस मेल के नीचे कॉपी किया है। मुझे नहीं पता कि यह मेरे उपभोक्ता रहस्य के साथ क्या करना है (क्या मुझे Google मार्केटप्लेस से प्राप्त कुंजी का उपयोग करना चाहिए? या क्या मुझे डोमेन पेज प्रबंधित करने से प्राप्त कुंजी का उपयोग करना चाहिए?)। अभी मैं प्रबंधन पृष्ठ से प्राप्त कुंजी का उपयोग कर रहा हूं
यह भी जटिल है कि वास्तविक ऐपस्पॉट डोमेन mustrun2sun [] .appspot [बहुत नया एक से अधिक लिंक पोस्ट नहीं कर सकता] .com, लेकिन मैंने इसे Google ऐप्स में सेट अप किया है ताकि मेरे डोमेन से केवल उपयोगकर्ता लॉग इन कर सकें और यह भी कि मेरे डोमेन पर ऐप तैनात किया गया हो। (के रूप में must[]run[].corn[]ellsun[].[]com
& सब कुछ इस तरह के रूप में यह के लिए संदर्भित करता एप्लिकेशन तैनात किया जाता है, यहां तक कि प्रबंधन डोमेन बात में।)
मैं GDClient उपयोग कर रहा हूँ 2.0 कक्षाएं तो मैं काफी यकीन है कि सब कुछ योजना के ... यानी मैं के रूप में काम करना चाहिए हूँ मैं पुरानी सेवा सामग्री या कुछ भी नहीं उपयोग कर रहा हूँ। मैंने अपने ओथ "नृत्य" के लिए एक टेम्पलेट के रूप में htt[]p:/[]/k[]ing[]yo-bachi.blog[]spot.c[]om/2010/05/gaego[]ogleoauth.ht[]ml
का उपयोग किया है क्योंकि Google उदाहरण & पुराने Google डेटा 1.0 लाइब्रेरी का उपयोग करते हैं - मुझे लगता है।
त्रुटि है कि मैं जब मैं अपने परीक्षण पृष्ठ पर जाने के हो रही है
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/mustrun2sun/1.341947133742569880/main.py", line 170, in get
feed = client.GetDocList(auth_token=gdata.gauth.AeLoad(users.get_current_user().user_id())) #auth_token=TOKEN
File "/base/data/home/apps/mustrun2sun/1.341947133742569880/gdata/docs/client.py", line 141, in get_doclist
auth_token=auth_token, **kwargs)
File "/base/data/home/apps/mustrun2sun/1.341947133742569880/gdata/client.py", line 635, in get_feed
**kwargs)
File "/base/data/home/apps/mustrun2sun/1.341947133742569880/gdata/client.py", line 308, in request
response, Unauthorized)
Unauthorized: Unauthorized - Server responded with: 401, <HTML>
<HEAD>
<TITLE>Token invalid - Invalid AuthSub token.</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Token invalid - Invalid AuthSub token.</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
भी है, क्योंकि यह कठिन है w/ओ किसी भी स्रोत कोड, नीचे प्रासंगिक कोड है:
import gdata.auth
import gdata.gauth
import gdata.docs.client
import gdata.docs.data
import gdata.docs.service
import gdata.alt.appengine
from aeoid import middleware, users
class GetOauthToken(webapp.RequestHandler):
def get(self):
user_id = users.get_current_user().user_id()
saved_request_token = gdata.gauth.AeLoad("tmp_"+user_id)
gdata.gauth.AeDelete ("tmp_" + user_id)
request_token = gdata.gauth.AuthorizeRequestToken(saved_request_token, self.request.uri)
#upgrade the token
access_token = client.GetAccessToken(request_token)
#save the upgraded token
gdata.gauth.AeSave(access_token, user_id)
self.redirect('/test')
class Test(webapp.RequestHandler):
def get(self):
TOKEN = gdata.gauth.AeLoad(users.get_current_user().user_id())
if TOKEN:
client = gdata.docs.client.DocsClient(source=SETTINGS['APP_NAME'])
client.auth_token = gdata.gauth.AeLoad(users.get_current_user().user_id()) #could try to put back as TOKEN?
self.response.out.write('moo baby')
client.ssl = True
feed = client.GetDocList(auth_token=gdata.gauth.AeLoad(users.get_current_user().user_id())) #auth_token=TOKEN
self.response.out.write(feed)
self.response.out.write('moo boobob')
self.response.headers['Content-Type'] = 'text/plain'
for entry in feed.entry:
self.response.out.writeln(entry.title.text)
else:
# Get unauthorized request token
gdata.gauth.AeDelete(users.get_current_user().user_id())
client = gdata.docs.client.DocsClient(source=SETTINGS['APP_NAME'])
client.ssl = True # Force communication through HTTPS
oauth_callback_url = ('http://%s/get_oauth_token' %
self.request.host)
request_token = client.GetOAuthToken(
SETTINGS['SCOPES'], oauth_callback_url, SETTINGS['CONSUMER_KEY'],
consumer_secret=SETTINGS['CONSUMER_SECRET'])
gdata.gauth.AeSave(request_token, "tmp_"+users.get_current_user().user_id())
# Authorize request token
domain = None#'cornellsun.com'
self.redirect(str(request_token.generate_authorization_url(google_apps_domain=domain)))
मैं उत्तर के लिए वेब पर उच्च और निम्न देख रहा हूं & मैं एक नहीं ढूंढ पाया।
Aeoid (या अन्य openid lib) कर रहा था OAuth + OpenID कॉम्बो के लिए आवश्यकता हो सकती है। – iamgopal
@iamgopal - क्या आपने मेरा जवाब पढ़ा? – sje397