使用AWS API Gateway进行Instagram订阅回调 - 无效的SSL证书

时间:2016-04-29 10:01:34

标签: https instagram-api aws-api-gateway

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

我们的应用程序托管在AWS API Gateway上,只能使用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 Gateway注册的HTTPS证书,还是使用库存AWS URL(https://xxxx.execute-api.us-east-1.amazonaws.com)作为回调(也具有有效的HTTPS证书),都会发生这种情况。我已经确认证书是好的'使用SSLLabs(他们都得到A结果)。我们的代码永远不会被调用(因此它不是hub.challenge参数的返回问题.Instagram似乎在启动连接时拒绝HTTPS证书。

有趣的是,如果我们在普通计算机(EC2实例)上使用我们与AWS API Gateway一起使用的相同的证书,并将DNS记录更改为指向此服务器,那么它将按预期工作订阅有效。

使用AWS API Gateway时是否有人使Instagram订阅工作?

3 个答案:

答案 0 :(得分:1)

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

正如Garrett在下面指出的那样,虽然Instagram无法直接发布到API网关,但您可以在您的API网关端点前放置一个云端分发版,让Instagram指向它。这将有效。

答案 1 :(得分:1)

我遇到过这篇文章并感到受到当前答案的欺骗,因为尽管instagram的api不接受SNI,仍然可以使用API​​网关。

“如果托管在API Gateway上,Instagram应用程序将无法运行,直到Instagram升级其Python版本。”不是真的。

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

我添加了配置的屏幕截图,以便将来可以帮助某人。

Here is the first configuration screenshot

Behavior Settings

Origin Settings

答案 2 :(得分:0)

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

如果您还没有,那么您还应该尝试在API阶段enable CloudWatch logging调试呼叫。