1

私はウェブを検索するのに何日も費やしましたが、空白を描いています-私もPythonが初めてです!私は単に RPX (janrain) を Appengine に統合したいだけです - スクリプトの挿入と openid トークンの戻りのためのコードのロード - それはすべて素晴らしいです - しかし、実際に openid を作成することのように、誰もそれをさらに進めないようです機能するログイン - なぜですか? セッション管理はないと思いますか?

以下は、オープン ID の TOKEN を取得し、フェッチを行ってユーザー プロファイルを取得する単純なクラス ハンドラーです。RPXを使用すると、すべて非常に簡単です。

RPX からの応答を取得する単純なハンドラー

class RPXHandler(webapp.RequestHandler):
  def get(self):
    token = self.request.get('token')
    url = 'https://rpxnow.com/api/v2/auth_info'
    args = {
      'format': 'json',
      'apiKey': '#YOUR KEY#',
      'token': token
      }
    r = urlfetch.fetch(url=url,
                       payload=urllib.urlencode(args),
                       method=urlfetch.POST,
                       headers={'Content-Type':'application/x-www-form-urlencoded'}
                       )
json = simplejson.loads(r.content)

logging.info(json)

if json['stat'] == 'ok':    
  unique_identifier = json['profile']['identifier']
  nickname = json['profile']['preferredUsername']
  email = json['profile']['email']
  

  # log the user in using the unique_identifier
  # this should your cookies or session you already have implemented
  

  self.redirect('static/loggedin.html')
  else:
  self.redirect('static/error.html')  
  

# ここから問題が始まります - 理想的には怠け者で、Google アカウントにログインするだけです - しかし、ユーザーをログインさせる方法はありません。

user.login(メール)

そのため、Google アカウントを使用するという希望はすべて放棄されます。また、オープン ID を持っているかどうかを公平に判断するためにも、気にする必要はありません。

それで...

私が必要としているのは、自分のユーザーデータストアです - それは簡単です - そして、ユーザーがログインしているかどうかを識別するいくつかの手段 - セッション? しかし、AppEngine では、セッションはサポートされていません。

これに対処しているというクラスライブラリをいくつか見つけましたが、すべて文書化が不十分で、適切なコード例がありません

誰でも助けることができますか?

4

2 に答える 2

1

GAE はデータベースへのアクセスを提供しますよね? 安全なトークンを生成し、RPX によって返されたユーザー URL と共にデータベースに保存します。安全なトークンを Cookie として設定して、リクエストごとに取得できるようにします。データベースでトークンを検索し、そこから残りの作業を行います。

パフォーマンスが心配ですが、実際にはかなりうまく機能します。

于 2010-01-28T20:34:10.420 に答える
0

役立つはずのGAEレシピがあります

http://appengine-cookbook.appspot.com/recipe/accept-google-aol-yahoo-myspace-facebook-and-openid-logins/

于 2010-01-28T20:31:08.883 に答える