Facebook GraphAPIError:(#4)达到应用程序请求限制 - 在第一次请求时

时间:2015-09-11 17:18:21

标签: python facebook google-app-engine facebook-graph-api

我正在构建一个仍处于开发阶段的新应用,即我是唯一的用户。用户在前端进行身份验证,然后将Facebook访问令牌传递给后端。我想在后端验证此令牌,以确保它仍然有效,它与此应用程序匹配,并且用户匹配。如how to verify facebook access token?(和the official Facebook docs)中所述,可以通过调用/** @var $objectInstance \Fully\Namespaced\ClassName */ 来完成此操作。

当我从本地计算机拨打此电话时,它运行正常。当我使用Graph API Explorer调试工具执行此操作时,它可以正常工作。它曾经在我的后端工作正常,但几天前它停止工作,现在我每次拨打这个电话时都会收到此错误:

graph.facebook.com/debug_token

我不可能超出任何限制,因为API调用的总数很小(这个应用程序仍处于开发模式,我每次登录只进行一次调用,而不是批处理任何内容,而不是尝试读取提要等)。事实上,我在某一天发出的第一个请求会导致此错误。这是Facebook关于我正在进行的API调用总数的图表:

Facebook API Usage and Performance

有很多关于同一错误的问题,例如Facebook Application Request limit reached但是在所有这些情况下,用户实际上似乎超出了一些请求限制,而在这种情况下,这似乎不可能。这个错误似乎有误导性。

我的后端是用Python编写的,并托管在Google App Engine上。

可能导致此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

It turns out that this had absolutely nothing to do with quotas. It was a bug in the Python code. Here's what I was doing (using the Facebook Python SDK).

    import facebook
    app_access_token = facebook.get_app_access_token(
        FACEBOOK_KEYS['consumer_key'], FACEBOOK_KEYS['consumer_secret'])
    graph = facebook.GraphAPI(app_access_token)
    token_info = graph.get_object("debug_token?input_token=%s" %
                                  access_token)

I changed the last line to the following:

    token_info = graph.get_object("debug_token", input_token=access_token)

Now it works. The error was completely misleading. I suppose Facebook was getting confused and not seeing the right token. I filed a bug report with Facebook in the hope that the error message, at least, can be improved.