Flask で Facebook アプリを作成しています。これはマイクロフレームワークであるため、チュートリアルから簡単に始めて、app.py と conf.py (および /templates など) の 2 つのファイルにすべてを含めました。
基本的な構造(主にherokuによって生成された)では、次のようになりました。
/game
game.py
conf.py
app.py
FB_APP_ID = os.environ.get('FACEBOOK_APP_ID')
FB_APP_SECRET = os.environ.get('FACEBOOK_SECRET')
requests = requests.session()
app_url = 'https://graph.facebook.com/{0}'.format(FB_APP_ID)
FB_APP_NAME = json.loads(requests.get(app_url).content).get('name')
FB_APP_LOGO = json.loads(requests.get(app_url).content).get('logo_url')
app = Flask(__name__)
app.config.from_object(__name__)
app.config.from_object('conf.Config')
@app.route('/channel.html', methods=['GET', 'POST'])
def get_channel():
return render_template('channel.html')
@app.route('/')
def index():
return 'index'+str(FB_APP_ID)
if __name__ == '__main__':
port = int(os.environ.get("PORT", 5000))
print requests.headers
if app.config.get('FB_APP_ID') and app.config.get('FB_APP_SECRET'):
app.run(host='0.0.0.0', port=port)
else:
print 'Cannot start application without Facebook App Id and Secret set'
conf.py
import os
class Config(object):
DEBUG = True
TESTING = False
LOG_LEVEL = os.environ.get('LOG_LEVEL', 'DEBUG')
FBAPI_APP_ID = os.environ.get('FACEBOOK_APP_ID')
FBAPI_APP_SECRET = os.environ.get('FACEBOOK_SECRET')
FBAPI_SCOPE = ['user_likes', 'user_photos', 'user_photo_video_tags']
完璧なMVCにしたかったので、このリンクを使用して問題が発生しました。
/game
conf.py
runserver.py
/game
/templates
/static
__init__.py
views.py
models.py
runserver.py
import os
from game import app
if __name__ == '__main__':
port = int(os.environ.get("PORT", 5000))
# print requests.headers
if app.config.get('FB_APP_ID') and app.config.get('FB_APP_SECRET'):
app.run(host='0.0.0.0', port=port)
else:
print 'Cannot start application without Facebook App Id and Secret set'
__init__.py
from flask import Flask
import os, requests, json
SCRIPTS='static/scripts/'
FB_APP_ID = os.environ.get('FACEBOOK_APP_ID')
FB_APP_SECRET = os.environ.get('FACEBOOK_SECRET')
requests = requests.session()
app_url = 'https://graph.facebook.com/{0}'.format(FB_APP_ID)
FB_APP_NAME = json.loads(requests.get(app_url).content).get('name')
FB_APP_LOGO = json.loads(requests.get(app_url).content).get('logo_url')
app = Flask(__name__)
app.config.from_object(__name__)
app.config.from_object('conf.Config')
import game.views
import game.models
conf.py は同じままで、index ビューはビューにあります。
問題: 最初の構造 (単純な) で、os.environ はすべての FB_APP_ID と FB_APP_SECRET を問題なく取得し、そのデータを好きなように処理できました。
今(MVCでは)変数をフェッチしないだけで、そこにあるのは「なし」です。__init__ == __main__ をどこにでも配置しようとしましたが、実際には何も機能しませんでした。
conf.py には、最初にすべてのデータが含まれています (DEBUG=TRUE または LOG LEVEL など)。取得できないのはfbデータだけです。