如何处理Flask应用上的Facebook验证请求

时间:2019-06-17 20:38:55

标签: python flask facebook-app-requests

我在Heroku上设置了一个Flask应用程序,以设置Web钩子,以从Facebook的证书透明性API中提取网络钓鱼证书。我正在尝试通过Facebook的验证请求(Facebook发送GET请求以询问hub.challenge),但是我不知道如何为他们提供所需的信息。在建议我使用Facebook的预先构建的Heroku应用之前,我正在做此学习。

我尝试查找有关GET请求的更多信息,但这并没有帮助我解决此问题。

这是Facebook的网站。 https://developers.facebook.com/docs/graph-api/webhooks/getting-started#verification-requests

@app.route("/facebook", methods=['GET', 'POST'])
if request.method == 'GET':
    def get_facebook(mode, challenge, verify_token):
        #not sure what to put in here

1 个答案:

答案 0 :(得分:0)

查看文档后,有几点提示:

  • 您将以GET的形式收到请求,因此方法中将不需要'POST'
  • 从Facebook发送的值将是请求参数,可以使用request.args.get('e.g.')
  • 访问
  • Facebook希望返回int,具体由您自己决定。

结果(免责声明:未经测试!)

import datetime
from flask import jsonify

@app.route("/facebook", methods=['GET'])
def get_facebook():
    my_token = 'abc123' # The token you setup on the App dashboard

    if request.args.get('hub.verify_token') == my_token:
        # The token is valid, return the (current datetime as an int)
        # Assuming facebook is expecting a JSON result value
        return jsonify({'hub.challenge': int(datetime.datetime.now().timestamp())})


    return 'invalid', 403