0

我正在使用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:

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 方法。我的 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 下运行,这是唯一返回的页面:

只显示页面

4

2 回答 2

0

你能发布你的错误实际上是什么样的吗?

听起来您没有正确设置 FB 重定向。或者您的 FB 可能设置在沙盒中,并且您正尝试使用非沙盒用户访问您的应用程序。

于 2012-06-05T05:57:48.907 回答
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 回答