Flask/Python アプリでやりたいことは、PHP で行ったことと似ています。PHP では、新しい facebook オブジェクトを作成することができました。ユーザーが既にアプリを承認しており、Facebook アカウントに既にログインしている場合、ユーザーの情報はオブジェクトに読み込まれ、[サインイン] をクリックする必要はありません。 with Facebook」をサイトに表示すると、ユーザーがすでにログインしており、承認されていることが自動的に認識されます。
私のPythonアプリでは、https://github.com/pythonforfacebook/facebook-sdk/を使用しています
@app.route('/login')
def login():
return facebook.authorize(callback=url_for('facebook_authorized',
next=request.args.get('next') or request.referrer or None,
_external=True))
@app.route('/login/authorized')
@facebook.authorized_handler
def facebook_authorized(resp):
if resp is None:
return 'Access denied: reason=%s error=%s' % (
request.args['error_reason'],
request.args['error_description']
)
session['oauth_token'] = (resp['access_token'], '')
me = facebook.get('/me')
usr = Users.query.filter_by(fb_id=me.data['id']).first()
if (hasattr(usr, 'fb_id'))==False:
# Find them in our database and log them in
else:
# Sign them up
return redirect(url_for('home'))
アプリケーション全体で me オブジェクトを使用できるように設定して、ユーザーがログイン URL にアクセスしなくても、ページの読み込み時にこのステップを実行できるように自動ログインを許可する方法はありますか?
現時点では、ユーザーは Facebook 情報を取得するために /login にアクセスする必要があります。スクリプト全体で使用される変数になる可能性があるPHPでできるように、これを行うことは可能ですか? - 冗長に聞こえて申し訳ありません。これを明確に説明する方法がわかりません。
PHP では、いくつかのサンプル コードは次のようになります。これは、ページが読み込まれるたびに呼び出されるため、ユーザーが Facebook でログインするために /login URL にアクセスする必要はありません。
<?php
if(!$this->getUser()){
$facebook = new Facebook(array(
'appId' => '',
'secret' => '',
));
$this->fbuser = $facebook->getUser();
if ($this->fbuser) {
# etc..
?>