使用 ngrok for kik 时仅返回 404

Posted

技术标签:

【中文标题】使用 ngrok for kik 时仅返回 404【英文标题】:only 404s returned when using ngrok for kik 【发布时间】:2016-12-21 21:14:24 【问题描述】:

我正在尝试开发一个kik 机器人。我用NGROK将我的localhost隧道隧道隧道到NGROK服务器。但是,每当我运行我的 python 程序并启动 ngrok 服务器并在我的手机上向机器人发送消息时,它返回的只是 404 错误。这是我的python代码

from flask import Flask, request, Response
import os 
from kik import KikApi, Configuration 
from kik.messages import messages_from_json, TextMessage

app = Flask(__name__)
BOT_USERNAME = os.environ.get('BOT_USERNAME') 
BOT_API_KEY =  os.environ.get('BOT_API_KEY') 

kik = KikApi(BOT_USERNAME, BOT_API_KEY)

kik.set_configuration(Configuration(webhook='my_webhook'))

@app.route('/incoming', methods=['POST'])
def incoming():
    if not kik.verify_signature(request.headers.get('X-Kik-Signature'),    request.get_data()):
    return Response(status=403) 

    messages = messages_from_json(request.json['messages'])

    for message in messages:
        if isinstance(message, TextMessage):
            kik.send_messages([
                TextMessage(
                    to=message.from_user,
                    chat_id=message.chat_id,
                    body=message.body
                )
            ])

return Response(status=200)


if __name__ == "__main__":
    app.run(port=8080, debug=True)

基本上,当我运行这个文件时,ngrok和localhost告诉我“404找不到”。我按照here 的指示进行了 POST 以设置我的机器人配置。当我检查Webhook的Kik Bot时,它会显示NGROK URL。我还需要做些什么才能以普通用户的身份向机器人发送消息吗?我知道 kik 使用“X-Kik-Username”进行身份验证,所以这与它有关吗?

Error messages from ngrok

【问题讨论】:

,您如何尝试访问它? span> @ lennard我只是在手机上留言 span> 您是否可以显示您的收到错误消息? span> @lennard 当然,我添加了 ngrok 在我向手机上的机器人发送消息时给我的错误消息 好的,当你的路由是 /incoming 时,看起来 ngrok 正在向 / 发送 POST。尝试将其更改为匹配。 【参考方案1】:

我在使用带有 404 的 Django 时遇到了类似的问题,因为在外部平台中指定的 webhook URL 包含在 ngrok 对本地开发服务器的请求中,因此使用了类似 http://xyz.ngrok.io/https://xyz.ngrok.io/api/v1/webhooks 的内容作为请求。使用 -host-header 选项为我解决了这个问题:

./ngrok http -host-header=rewrite 127.0.0.1:8000

【讨论】:

【参考方案2】:

我想通了。我将代码中的路线从“/incoming”更改为“/”。这样就可以做出正确的反应。

【讨论】:

以上是关于使用 ngrok for kik 时仅返回 404的主要内容,如果未能解决你的问题,请参考以下文章

使用 Twilio + Flask + Ngrok + Python (2.7) 在本地主机上出现 404 错误

404 Not Found with ngrok 和 Bot Framework

将 Flask 和 Ngrok 用于 http://127.0.0.1:5000 时找不到 404

React Native:开发服务器返回响应错误码 404

Wordpress ACF 选择:动态使用类别作为选择时仅返回第一个对象

PInvoke 在返回结构时仅适用于 64 位