私は Google App Engine アプリを持っています - http://mylovelyapp.appspot.com/ それはページを持っています - mylovelypage
現時点では、ページはself.response.out.write('OK')
コンピューターで次の Python を実行すると、次のようになります。
import urllib2
f = urllib2.urlopen("http://mylovelyapp.appspot.com/mylovelypage")
s = f.read()
print s
f.close()
「OK」と出力されます
問題はlogin:required
、アプリの yaml でこのページに追加した場合です
これにより、Google アカウントのログイン ページの HTML が出力されます。
「通常の」認証アプローチを試しました。例えば
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(None,
uri='http://mylovelyapp.appspot.com/mylovelypage',
user='billy.bob@gmail.com',
passwd='billybobspasswd')
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
しかし、違いはありません。ログイン ページの HTML が返されます。
Google の ClientLogin auth APIを試しましたが、うまくいきません。
h = httplib2.Http()
auth_uri = 'https://www.google.com/accounts/ClientLogin'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
myrequest = "Email=%s&Passwd=%s&service=ah&source=DALELANE-0.0" % ("billy.bob@gmail.com", "billybobspassword")
response, content = h.request(auth_uri, 'POST', body=myrequest, headers=headers)
if response['status'] == '200':
authtok = re.search('Auth=(\S*)', content).group(1)
headers = {}
headers['Authorization'] = 'GoogleLogin auth=%s' % authtok.strip()
headers['Content-Length'] = '0'
response, content = h.request("http://mylovelyapp.appspot.com/mylovelypage",
'POST',
body="",
headers=headers)
while response['status'] == "302":
response, content = h.request(response['location'], 'POST', body="", headers=headers)
print content
トークンを正しく取得できるようですが、「mylovelypage」を呼び出すときにヘッダーでトークンを使用しようとしても、ログイン ページの HTML が返されます。:-(
誰でも助けてもらえますか?
GData クライアント ライブラリを使用して、この種のことを行うことはできますか? 私が読んだことから、App Engineアプリにアクセスできるはずだと思いますが、App Engineのものに対して認証を機能させることにこれ以上成功していません
サンプル、記事、または検索を開始するために検索する必要があるキーワードへのポインターは、非常に高く評価されます。
ありがとう!