【问题标题】:Sending message to facebook page using python Flask使用 python Flask 向 facebook 页面发送消息
【发布时间】:2025-12-26 04:40:12
【问题描述】:

我想使用我的烧瓶应用程序向 Facebook 页面发送消息,但我一直收到 400 错误请求错误,请问我在哪里做错了,或者有更好的方法来做到这一点。这是代码

import requests
import urllib
import json
import os

from flask import Flask
from flask import request
from flask import make_response

app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def webhook():
  req = request.get_json(silent=True, force=True)
  print("Request:")
  print(json.dumps(req, indent=4))

  res = processRequest(req)
  print(res)

  url = 'https://graph.facebook.com/v2.6/me/messages'
  payload = res
  headers = {'content-type': 'application/json'}
  r = requests.post(url, data=json.dumps(payload), headers=headers)
  print(r)
  return r

def processRequest(req):
  request = req.get("originalRequest")
  first_data = request.get("data")
  sender = first_data.get("sender")
  user_id = sender.get("id")
  speech = "hello"

  print("Response:")
  print(speech)
  token ="my_access_token"

  return {
    "recipient": {
        "id": user_id
    },
    "message": speech,
    'access_token': token
}

if __name__ == "__main__":
  port = int(os.getenv('PORT', 5000))

  print("Starting app on port %d" % port)

  app.run(debug=False, port=port, host='0.0.0.0')

感谢任何帮助。提前致谢

【问题讨论】:

  • 去检查 API 响应的正文,它应该包含一条错误消息。

标签: python facebook api flask


【解决方案1】:

您是否在请求中传递了有效的“access_token”?如果没有,服务器端将返回 400 bad request 错误。使用正确的“access_token”值,请求如下所示:

curl -X POST -H "Content-Type: application/json" -d '{
  "recipient": {
    "id": "USER_ID"
  },
  "message": {
    "text": "hello, world!"
  }
}' "https://graph.facebook.com/v2.6/me/messages?access_token=PAGE_ACCESS_TOKEN"

请阅读来自here 的官方 Facebook API 参考以了解更多详细信息。

【讨论】:

  • 我正在使用来自 facebook 页面的正确 access_token 值,但我没有使用 curl。
  • 感谢您的回复,我想我会尝试更多的事情