从Gmail API向localhost端点

时间:2015-09-17 06:46:50

标签: google-cloud-platform google-cloud-pubsub

我想做什么

我每次都会在watch()上收到电子邮件时,使用Gmail API + Google Pub / Sub API将Push notifications投放到在EC2实例上运行的节点服务器上收件箱。我将我的服务器的域添加到console.developers.google.com的推送部分,然后对于Pub / Sub API,我创建订阅并添加推送端点URL。端点看起来像这样:https://example.com/receive

我想做的是在本地进行测试。

问题

如何让Google向我的localhost服务器发送推送通知?当我测试时,我希望将新电子邮件的通知发送到http://localhost:8080/receive。我在考虑使用ngrok来公开localhost - 问题是,每次ngrok URL改变时我都必须手动上传Google的证明(我拥有域名),这是一个非常头痛的问题。

在我的localhost服务器上是否存在接收新电子邮件通知的更好方式?

3 个答案:

答案 0 :(得分:3)

一种选择是每月向ngrok支付5美元并获得自定义子域名。另一种选择是自己模拟这些通知的HTTP POST请求。卷曲可以做到如下:

$ curl -i --data @push_notification.json http://localhost:8080/receive

你需要一个本地文件' push_notification.json'与gmail推送通知具有相同的内容。

答案 1 :(得分:0)

Google的推送通知是对端点的HTTP S POST调用。 要使HTTPS正常工作,请使用与公共域名匹配的有效SSL证书。所以,您需要以下内容:

1. A public domain name.
2. an SSL certificate that matches that particular domain name. 
3. your domain should be publically reachable on port 443. 

如果您在公司工作,请要求IT部门为您的主机分配一个域名,并通过互联网提供相应的证书。

如果是家庭连接,则不能使用free / noip / etc域,例如以* .ddns.net结尾的域,因为您无法获得.ddns.net的SSL证书。 但是你可以获得* .biz或* .info域名,每年不到10美元。 此外,如果您使用家庭连接并且没有固定IP,请选择允许自动更新IP地址的域名注册商。

对于SSL证书,您可以从comodo等公司获得3个月的免费试用,或者1 - 3年的证书,如果您使用其中一个折扣经销商,这些也可以非常便宜。我建议跳过3个月的免费试用,因为三个月后你可能不得不再做一次,你的时间可能超过8美元。

由于这些是标准的HTTPS请求,端点应该可以在端口443上公开访问。例如,让端口443打开调制解调器/防火墙,但将其路由到更高的端口(> 1024),这样你就不会需要以root身份运行端点服务器(如果是在linux上)。

答案 2 :(得分:0)

您可以serveo通过您拥有的域将本地服务器公开到Internet(ssh)。如果您使用Linux(一种流行的发行版),则可以在不安装任何其他软件的情况下进行操作:

  1. 生成ssh密钥(ssh-keygen
  2. 获取密钥的指纹(ssh-keygen -l
  3. 在域配置中:
    • A指向159.89.214.31(在伺服页面上检查)
    • 添加值为TXT的{​​{1}}记录
  4. 将端口8080从本地主机隧道传输到your_domain.com上的80:authkeyfp=fingerprint_from_point_2