0

からの初期コードは次のとおりです

class AuthLoginHandler(BaseHandler, tornado.auth.FacebookGraphMixin):
@tornado.web.asynchronous
def get(self):
    my_url = (self.request.protocol+"://"+self.request.host+"/auth/login?next="+tornado.escape.url_escape(self.get_argument("next", "/")))
    print my_url
    if self.get_argument("code", False):
        self.get_authenticated_user(redirect_uri=my_url,client_id=facebook_api_key, client_secret=facebook_secret,code=self.get_argument("code"),callback=self._on_auth)
        print "th"
        print self.get_argument("code")
        return
    self.authorize_redirect(redirect_uri=my_url,client_id=facebook_api_key,extra_params={"scope": "read_stream"})

def _on_auth(self, user):
    if not user:
        raise tornado.web.HTTPError(500, "Facebook auth failed")
    self.set_secure_cookie("user", tornado.escape.json_encode(user))
    self.redirect(self.get_argument("next", "/"))

私が得られないものは次のとおりです。

if self.get_argument("code", False):

これはどういう意味ですか?私が作るとMissing引数コードself.get_argument("code")があるというエラーが出るからです

この引数を否定してから呼び出す理由code=self.get_argument("code")

私はドキュメントをチェックしましたが、私が理解しているのは、デフォルトFalseで変更Strip=Trueすることです!

コードを教えてください。

4

1 に答える 1

1

「コード」をフラグと考えてください。「ユーザーが Facebook によって検証されている場合」です。

If self.get_argument("code", False):
     # Happy we are now authorized by Facebook
     Get the Facebook user who is logged in (and then call '_on_auth')
     return 
(Else): 
     Ask for authorization

Tornado 認証コードはこちら

簡単なバージョン: 'code' 変数を設定しようとしないでください。これは Facebook が行うことです。

于 2013-02-26T18:05:13.150 に答える