我正在使用runwithfriends示例应用程序来学习画布编程和 GAE。我可以将示例代码上传到 GAE,而不会出现任何错误。这是我的 config.py 和 app.yaml 文件:
配置文件:
# 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 = ['']
应用程序.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 方法。我的 GAE 实例中也没有记录任何错误,例如 404 或 405。当我第一次使用http://localhost:8080
时,我看到很多 200 秒,没有别的。
我开始使用 dev_appengine.py,但由于我的 HTTPS 安全设置,不得不将开发转移到 GAE。我暂时禁用了 HTTPS,但无论如何仍然总是被重定向到 apps.facebook.com/path,并且无法将我的所有开发都保留在 dev_appengine.py 中。不知道是不是和我的问题有关。
由于演示有效(当不超过配额时),我确定问题出在我自己的 GAE 实例,或 FB 中的配置以使用我的 GAE,我只是一辈子都想不通。我正在使用带有 PyDev 和 GAE 插件的 Eclipse。
更新
添加应用程序的 FB 配置和登录应用程序后显示的窗口。
沙盒:
重定向:
在我的 GAE 下运行,这是唯一返回的页面: