将推送通知从 Gmail API 发送到本地主机端点
Sending push notification from Gmail API to localhost endpoint
我想做什么
我正在使用 Gmail API + Google Pub/Sub API 发送 Push notifications to my Node server running on an EC2 instance, for every time I receive an email on a watch()
ed inbox. I add the domain of my server to the Push section of console.developers.google.com,然后用于 Pub/Sub API,我创建订阅并添加推送端点 URL。端点看起来像这样:https://example.com/receive
。
我想做的是在本地进行测试。
问题
如何让 Google 将推送通知发送到我的本地主机服务器? 当我测试时,我希望将新电子邮件的通知发送到 http://localhost:8080/receive
。我正在考虑使用 ngrok 来公开本地主机 - 但问题是每次 ngrok URL 时我都必须手动上传 Google (我拥有该域)的证明改变了,这是一个巨大的头痛。
是否有更好的方式在我的本地主机服务器上接收新电子邮件通知?
一种选择是每月向 ngrok 支付 5 美元并获得一个自定义子域。另一种选择是自己模拟对这些通知的 HTTP POST 请求。可以通过 curl 实现,如下所示:
$ curl -i --data @push_notification.json http://localhost:8080/receive
您需要一个本地文件'push_notification.json',其内容与 gmail 推送通知相同。
Google 的推送通知是对端点的 HTTPS POST 调用。
要使 HTTPS 正常工作,需要一个与 public 域名匹配的有效 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 部门为您的主机分配一个域名,该域名可通过 Internet 访问并具有适当的证书。
如果是家庭连接,则不能使用 free/noip/etc 域,例如以 *.ddns.net 结尾的域,因为您无法获得 .[=25= 的 SSL 证书].
但您每年只需不到 10 美元即可获得 *.biz 或 *.info 域名。
此外,如果您使用的是家庭连接并且没有固定 IP,请选择允许自动更新 IP 地址的域名注册商。
对于 SSL 证书,您可以从 comodo 等公司获得 3 个月的免费试用,或 1-3 年的证书,如果您使用折扣经销商之一,这些也可能非常便宜。我建议跳过 3 个月的免费试用,因为三个月后你可能不得不再次尝试,而你的时间可能价值超过 8 美元。
由于这些是标准的 HTTPS 请求,端点应该 public 可以在端口 443 上完全访问。例如,让端口 443 打开 modem/firewall 但将其路由到更高的端口(>1024 ) 所以你不需要 运行 端点服务器作为根(如果在 linux 上)。
您可以 serveo 通过您拥有的域将您的本地服务器公开到 Internet (ssh)。如果您使用 Linux(流行的发行版之一),则无需安装任何其他软件即可完成:
- 生成 ssh 密钥(
ssh-keygen
)
- 获取钥匙的指纹(
ssh-keygen -l
)
- 在域配置中:
- 将
A
指向159.89.214.31
(在伺服页面上查看)
- 添加
TXT
条记录,值为 authkeyfp=fingerprint_from_point_2
- 从本地主机到 your_domain.com 上的 80 的隧道端口 8080:
ssh -R
your_domain.com:80:localhost:8080 serveo.net
我想做什么
我正在使用 Gmail API + Google Pub/Sub API 发送 Push notifications to my Node server running on an EC2 instance, for every time I receive an email on a watch()
ed inbox. I add the domain of my server to the Push section of console.developers.google.com,然后用于 Pub/Sub API,我创建订阅并添加推送端点 URL。端点看起来像这样:https://example.com/receive
。
我想做的是在本地进行测试。
问题
如何让 Google 将推送通知发送到我的本地主机服务器? 当我测试时,我希望将新电子邮件的通知发送到 http://localhost:8080/receive
。我正在考虑使用 ngrok 来公开本地主机 - 但问题是每次 ngrok URL 时我都必须手动上传 Google (我拥有该域)的证明改变了,这是一个巨大的头痛。
是否有更好的方式在我的本地主机服务器上接收新电子邮件通知?
一种选择是每月向 ngrok 支付 5 美元并获得一个自定义子域。另一种选择是自己模拟对这些通知的 HTTP POST 请求。可以通过 curl 实现,如下所示:
$ curl -i --data @push_notification.json http://localhost:8080/receive
您需要一个本地文件'push_notification.json',其内容与 gmail 推送通知相同。
Google 的推送通知是对端点的 HTTPS POST 调用。 要使 HTTPS 正常工作,需要一个与 public 域名匹配的有效 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 部门为您的主机分配一个域名,该域名可通过 Internet 访问并具有适当的证书。
如果是家庭连接,则不能使用 free/noip/etc 域,例如以 *.ddns.net 结尾的域,因为您无法获得 .[=25= 的 SSL 证书]. 但您每年只需不到 10 美元即可获得 *.biz 或 *.info 域名。 此外,如果您使用的是家庭连接并且没有固定 IP,请选择允许自动更新 IP 地址的域名注册商。
对于 SSL 证书,您可以从 comodo 等公司获得 3 个月的免费试用,或 1-3 年的证书,如果您使用折扣经销商之一,这些也可能非常便宜。我建议跳过 3 个月的免费试用,因为三个月后你可能不得不再次尝试,而你的时间可能价值超过 8 美元。
由于这些是标准的 HTTPS 请求,端点应该 public 可以在端口 443 上完全访问。例如,让端口 443 打开 modem/firewall 但将其路由到更高的端口(>1024 ) 所以你不需要 运行 端点服务器作为根(如果在 linux 上)。
您可以 serveo 通过您拥有的域将您的本地服务器公开到 Internet (ssh)。如果您使用 Linux(流行的发行版之一),则无需安装任何其他软件即可完成:
- 生成 ssh 密钥(
ssh-keygen
) - 获取钥匙的指纹(
ssh-keygen -l
) - 在域配置中:
- 将
A
指向159.89.214.31
(在伺服页面上查看) - 添加
TXT
条记录,值为authkeyfp=fingerprint_from_point_2
- 将
- 从本地主机到 your_domain.com 上的 80 的隧道端口 8080:
ssh -R your_domain.com:80:localhost:8080 serveo.net