我正在使用runwithfriends示例应用来学习canvas编程和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 = ['']
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上访问演示应用程序就可以了。当我使用exact same code时,除了我需要在我自己的GAE帐户下运行的更改外,该应用程序将无效。我可以使用我的帐户登录该应用,该应用显示在我的应用菜单下。所以,OAuth很好。每次我去访问主页面时,我总是被重定向到iframe显示我使用的应用程序(无法显示该图像,runwithfriends应用程序超过配额,因为我键入此内容)但不会转到此iframe:
。
我查看并了解网址路由的工作原理:
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
时,我看到大量的200s而没有别的。
我开始使用dev_appengine.py,但由于我的HTTPS安全设置,我不得不将开发转移到GAE。我暂时禁用了HTTPS,但仍然总是被重定向到apps.facebook.com/path,无论如何都无法将我的所有开发都保留在dev_appengine.py中。不知道这是否与我的问题有关。
由于演示工作(当没有超过配额时),我确定问题出在我自己的GAE实例上,或FB中的配置使用我的GAE,我只是因为我的生活无法弄清楚。我正在使用Eclipse和PyDev以及GAE插件。
添加应用程序的FB配置以及登录应用程序后显示的窗口。
沙箱:
重定向:
在我的GAE下运行,这是唯一返回的页面:
答案 0 :(得分:0)
你能发布你的错误实际上是什么样的吗?
听起来你没有正确设置FB重定向。 或者您的FB可能已设置在沙盒中,并且您尝试使用非沙盒用户访问您的应用。
答案 1 :(得分: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 App现在可以使用。