runwithfriendsサンプルアプリを使用して、キャンバスプログラミングとGAEを学習しています。サンプルコードをエラーなしでGAEにアップロードできます。これが私のconfig.pyファイルとapp.yamlファイルです。
conf.py:
# Facebook Application ID and Secret.
FACEBOOK_APP_ID = ''
FACEBOOK_APP_SECRET = ''
# Canvas Page name.
FACEBOOK_CANVAS_NAME = 'blah'
# A random token for use with the Real-time API.
FACEBOOK_REALTIME_VERIFY_TOKEN = 'RANDOM TOKEN'
# The external URL this application is available at where the Real-time API will
# send it's pings.
EXTERNAL_HREF = 'http://blah.appspot.com'
# Facebook User IDs of admins. The poor mans admin system.
ADMIN_USER_IDS = ['']
app.yaml
application: blah
version: 1
runtime: python
api_version: 1
handlers:
- url: /(.*\.(html|css|js|gif|jpg|png|ico))
static_files: static/\1
upload: static/.*
expiration: "1d"
- url: .*
script: main.py
- url: /task/.*
script: main.py
login: admin
GAEでデモアプリにアクセスすることは問題なく機能します。まったく同じコードを使用すると、自分のGAEアカウントで実行する必要がある変更を除いて、アプリが機能しません。アカウントを使用してアプリにログインすると、アプリが[アプリ]メニューに表示されます。したがって、OAuthは優れています。メインページにアクセスするたびに、アプリを使用していることを示すiframeに常にリダイレクトされます(この画像を表示できません。これを入力すると、runwithfriendsアプリが割り当てを超えています)が、このiframeには移動しません。
まったく。
私はURLルーティングがどのように機能するかを見て理解しました:
def main():
routes = [
(r'/', RecentRunsHandler),
(r'/user/(.*)', UserRunsHandler),
(r'/run', RunHandler),
(r'/realtime', RealtimeHandler),
(r'/task/refresh-user/(.*)', RefreshUserHandler),
]
application = webapp.WSGIApplication(routes,
debug=os.environ.get('SERVER_SOFTWARE', '').startswith('Dev'))
util.run_wsgi_app(application)
すべてのハンドラーは、正しいpost/getメソッドのように見えます。404や405などのエラーはGAEインスタンスにも記録されていません。最初に使用したときはhttp://localhost:8080
、200がたくさん表示され、他には何も表示されません。
dev_appengine.pyを使い始めましたが、HTTPSセキュリティ設定のために開発をGAEに移行する必要がありました。HTTPSを一時的に無効にしましたが、それでも常にapps.facebook.com/pathにリダイレクトされ、すべての開発をdev_appengine.py内に保持できません。それが私の問題に関連しているかどうかわからない。
デモは機能するので(クォータを超えていない場合)、問題は自分のGAEインスタンス、または自分のGAEを使用するためのFB内の構成にあると確信しています。PyDevおよびGAEプラグインでEclipseを使用しています。
アップデート
アプリのFB構成と、アプリにログインした後に表示されるウィンドウを追加します。
サンドボックス:
リダイレクト:
私のGAEの下で実行すると、これが返される唯一のページです。