2016-04-29 27 views
0

我们正在尝试设置一个instagram应用程序,并通过该过程努力。尝试创建subscription时,我们现在陷入了困境。使用AWS API网关的Instagram订阅回拨 - 无效的SSL证书

我们的应用托管在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" 
    } 
} 

这种情况下,我们是否用我们自己的HTTPS证书,我们已经向API网关注册,或者我们是否使用股票AWS URL(https://xxxx.execute-api.us-east-1.amazonaws.com)作为回调(它也具有有效的HTTPS证书)。我已经使用SSLLabs验证了这些证书是“好的”(它们都得到了A结果)。我们的代码不会被调用(所以它不是hub.challenge参数这就是问题的回报。Instagram的似乎拒绝HTTPS证书发起连接时。

有趣的是,如果我们使用,我们与AWS使用相同证书一台正常的机器上的API网关(EC2实例),并更改DNS的记录指向该服务器,那么它的预期,认购工程各项工作。

有没有人有Instagram的订阅使用AWS API网关时,工作?

回答

1

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

正如Garrett指出的那样,虽然Instagram无法直接发布到API网关,但您可以在您的API网关端点之前放置一个cloudfront发行版,并让Instagram指向它。这将工作。

0

要验证这是否是API网关问题,您是否试图发出相同的问题lenge要求Instagram直接向您的API端点制作?

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

+0

没错。试过这两个。我们可以直接向我们的订阅回调端点发出同样的请求,并回应hub.challenge参数。我们已经启用了cloudwatch日志记录功能,并且可以从日志(和cloudwatch指标)中看到我们的API Gateway后面的Lambda进程甚至没有被调用(如果instagram拒绝HTTPS证书,这样做是有道理的,因为它实际上不会实现底层的HTTP GET调用) – agentgonzo

+0

只是要非常清楚,当我编写“API端点”时,我的意思是“https:// xxxx.execute-api.us-east-1.amazonaws.com”和您的自定义域。通过curl请求这些端点是成功还是失败? –

+0

对HTTPS://xxx.execute-api.us-east-1.amazonaws.com的调用失败,出现与我们的自定义域 – agentgonzo

1

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

“如果在API网关上托管API,Instagram应用将无法运行,直到Instagram升级其版本的Python。”是不正确的。

您只需将一个CloudFront实例放在api网关前,它就能正常工作,无需昂贵的SSL证书或任何东西。

我收录了我的配置截图,以便它可以帮助未来的某个人。

Here is the first configuration screenshot

Behavior Settings

Origin Settings

+0

Garrett相同的SSL错误,很好的信息。你确实可以从API网关中选择云端,并且它可以工作。在这种情况下,instagram正在发布到Cloudfront(而不是API网关) - 可能是一个平衡点。 – agentgonzo

+0

谢谢! 如果我错了,请纠正我,但您必须使用默认的CloudFront SSL才能正常工作 - 否则,您必须启用'自定义SSL支持 - 所有客户端',每年费用为$ 600。 玩这个很令人沮丧 - 花了很多时间等待分发更新。 –

+0

您对云端SSL的问题有哪些?你看看我发布的配置截图吗?我同意,等待分发更新是一大痛苦。但经过3次左右的修补后,我很高兴我做到了。特别是考虑到它是免费的,修改非常方便。实际上,我之前使用过第三方的SSL证书(比如COMODO),实际上,当您需要重新发布时,它们更加及时。考虑到这一点,这相对毫不费力。 –