0

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には移動しません。

runwithfriendsアプリウィンドウ

まったく。

私は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の下で実行すると、これが返される唯一のページです。

表示されるページのみ

4

2 に答える 2

0

テスト用の FB アプリを削除して、再作成することにしました。キー/シークレットの値を入力しようとしたとき、エラーが見つかったときでした。私の問題は、FB APP ID と SECRET にありました。どちらも、次のように一重引用符の間にスペースがありました。

# Facebook Application ID and Secret.
FACEBOOK_APP_ID = ' xxxxxxxxxxxxxxxxx'
FACEBOOK_APP_SECRET = ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

conf.py に新しい値を入力しようとすると、余分なスペースが見つかりました。正しい定数宣言:

# Facebook Application ID and Secret.
FACEBOOK_APP_ID = 'xxxxxxxxxxxxxxxxx'
FACEBOOK_APP_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

テスト FB アプリが動作するようになりました。

于 2012-06-05T20:13:59.073 に答える