Google App Engine アプリを持っています -翻訳: 翻訳者: 渡辺 剛志ページがあります - 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='[email protected]',
passwd='billybobspasswd')
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
しかし、違いはありません。ログイン ページの HTML が返されます。
私はもう試したGoogle の ClientLogin 認証 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" % ("[email protected]", "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 の認証を機能させることにはまだ成功していません。
始めるにあたって、サンプル、記事、あるいは検索すべきキーワードなどについてのご指摘をいただければ幸いです。
ありがとう!
ベストアンサー1
App Engine にデータをアップロードするツールである appcfg.py は、App Engine サーバーで認証するためにまさにこれを実行する必要があります。関連する機能は appengine_rpc.py に抽象化されています。簡単に言えば、解決策は次のとおりです。
- 使用Google クライアントログイン API認証トークンを取得します。appengine_rpc.pyはこれを実行します_GetAuthToken
- 認証トークンをApp Engineアプリの特別なURLに送信します。そのページはCookieと302リダイレクトを返します。リダイレクトを無視してCookieを保存します。appcfg.pyはこれを実行します。_GetAuthCookie
- 返された Cookie を今後のすべてのリクエストで使用します。
こちらもご覧ください_認証するappcfgがClientLoginからのさまざまな戻りコードをどのように処理するかを確認します。_GetOpener、appcfg が HTTP リダイレクトに従わない urllib2 OpenerDirector を作成する方法を確認してください。または、実際には、AbstractRpcServer クラスと HttpRpcServer クラスをそのまま使用することもできます。必要なことはほぼすべて実行できるからです。