使用 AWS API 网关的 Instagram 订阅回调 - 无效的 SSL 证书

Instagram Subscription Callback using AWS API Gateway - Invalid SSL certificate

我们正在尝试设置一个 Instagram 应用程序,并且已经完成了整个过程。我们现在在尝试创建 subscription.

时卡住了

我们的应用程序托管在 AWS API 网关上,它只能使用 HTTPS 端点进行部署(它不支持未加密的连接)。 当我们使用以下 POST 让 instagram 订阅用户时:

curl -F 'client_id=CLIENT-ID' \
     -F 'client_secret=CLIENT-SECRET' \
     -F 'object=user' \
     -F 'aspect=media' \
     -F 'verify_token=myVerifyToken' \
     -F 'callback_url=https://YOUR-CALLBACK/URL' \
     https://api.instagram.com/v1/subscriptions/

然后我们得到以下错误:

{
    "meta": {
        "error_type": "APISubscriptionError",
        "code": 400,
        "error_message": "Invalid response"
    }
}

无论我们使用自己在 API 网关注册的 HTTPS 证书,还是使用股票 AWS URL (https://xxxx.execute-api.us-east-1.amazonaws.com) 作为回调(这还具有有效的 HTTPS 证书)。我已经使用 SSLLabs 验证了证书 'good'(它们都得到了 A 结果)。我们的代码永远不会被调用(所以问题不是 hub.challenge 参数的 return。Instagram 在启动连接时似乎拒绝了 HTTPS 证书。

有趣的是,如果我们在普通机器(EC2 实例)上使用与 AWS API 网关相同的 相同 证书并将 DNS 记录更改为指向这个服务器,然后一切都按预期工作并且订阅有效。

有没有人在使用 AWS API 网关时让 Instagram 订阅正常工作?

要验证这是否是 API 网关问题,您是否尝试过向您的 API 端点直接发出与 Instagram 相同的质询请求?

如果您还没有,您还应该尝试 enable CloudWatch logging 在您的 API 阶段调试调用。

我们就此联系了 Instagram。 Instagram 使用的 Python(或其库)版本不支持 API Gateway 使用的 SNI (http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html),因此如果托管在 API Gateway 上,Instagram 应用将无法运行不幸的是,直到 Instagram 升级他们的 Python.

版本

正如加勒特在下面指出的那样,虽然 Instagram 无法 post 直接连接到 API 网关,但您可以在 API 网关端点前面放置一个云端分发,让 Instagram 指向那。这会起作用。

我遇到了这个 post 并感到被当前的答案欺骗了,因为 API 网关仍然可以使用,尽管 instagram 的 api 不接受 SNI。

"Instagram apps will not work if hosted on API Gateway unfortunately until Instagram upgrades their version of Python." 不正确。

您需要做的就是在 api 网关前面放置一个 CloudFront 实例,它会正常工作,而无需昂贵的 SSL 证书或任何东西。

我附上了我的配置的屏幕截图,以便将来对某人有所帮助。

Here is the first configuration screenshot

Behavior Settings

Origin Settings