私はWeb開発とPythonにかなり慣れていないので、Pythonフラスコを使用してFacebookアプリを作成しようとしています. このチュートリアルで、開始するために使用しているコードを見つけました: http://ryaneshea.com/facebook-authentication-for-flask-apps
Facebook OAuth 認証は機能しており、ユーザーがアプリを初めて使用するときに、アプリに権限を付与するよう求められます。その後、アプリケーション インデックス サイトにリダイレクトされるはずです。アプリが Facebook 内から使用されている場合、「405 メソッドは許可されていません」というメッセージが表示されます。アプリが Facebook の外部 (私の apache Web サーバーから) から使用されている場合、リダイレクトは機能します。
アプリが Facebook の外部から使用される場合は GET 要求のみが行われますが、Facebook の内部から使用される場合、これは 405 エラーを与える POST 要求です。
"POST /?fb_source=search&ref=br_tf HTTP/1.1""
ユーザーをリダイレクトできるように、Facebook からの POST リクエストを受け入れる方法に関する提案はありますか?
コードの関連部分は次のとおりです。
from flask import render_template, url_for, request, session, redirect
from flask_oauth import OAuth
oauth = OAuth()
facebook = oauth.remote_app('facebook',
base_url='https://graph.facebook.com/',
request_token_url=None,
access_token_url='/oauth/access_token',
authorize_url='https://www.facebook.com/dialog/oauth',
consumer_key=FACEBOOK_APP_ID,
consumer_secret=FACEBOOK_APP_SECRET,
request_token_params={'scope': 'email, '}
)
app = Flask(__name__)
@facebook.tokengetter
def get_facebook_token():
return session.get('facebook_token')
def pop_login_session():
session.pop('logged_in', None)
session.pop('facebook_token', None)
@app.route("/")
def index():
return render_template('index.html')
@app.route("/facebook_login")
def facebook_login():
return facebook.authorize(callback=url_for('facebook_authorized',
next=request.args.get('next'), _external=True))
@app.route("/facebook_authorized")
@facebook.authorized_handler
def facebook_authorized(resp):
next_url = request.args.get('next') or url_for('index')
if resp is None or 'access_token' not in resp:
return redirect(next_url)
session['logged_in'] = True
session['facebook_token'] = (resp['access_token'], '')
return redirect(next_url)