首先,我想描述一下我们的系统。 我们有两个服务器。
第一个在Google App Engine上 ,具有一些逻辑,可以为Android应用程序提供对数据库的访问,还具有一些用于外部通信的servlet(稍后将对此进行详细介绍)。
第二个是在Google Cloud Engine上 。 应用程序是用Meteor编写的(为简化起见,它只是Node.js)。 我们希望在这些服务器之间进行通信(GCE-> GAE)。 我们在此servlet端点上的其他API的地址为https://appname.appspot.com/admin/upload 。 当我在没有身份验证的情况下发出请求时,一切正常:
HTTP.get(getURL, {}, getCallback);
但是,我不知道如何使用oAuth2身份验证进行操作。 当我从浏览器转到地址https://appname.appspot.com/admin/upload时 ,它会将我重定向到Google身份验证,并且一切正常(在Google控制台中添加了我的帐户)。 但是如何使用oAuth2身份验证从Node.js服务器发送http请求?
为了给您更多细节,这是servlet配置:
<security-constraint>
<display-name>SecurityConstraint</display-name>
<web-resource-collection>
<web-resource-name>WRCollection</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
和
<servlet-mapping>
<servlet-name>UploadRequestServlet</servlet-name>
<url-pattern>/admin/upload</url-pattern>
</servlet-mapping>
我知道我必须将服务器设置为服务器通信,但是如何使用Node.js完成此通信? 有人可以帮忙吗? 我不知道从哪里开始
如果有人在使用OAuth 2.0签出库进行服务器到服务器通信(Meteor.js服务器到Google服务器)时遇到问题,那么我已经创建了https://github.com/jagi/meteor-google-oauth-jwt 。 它使从Meteor.js服务器调用Google REST API变得更加简单。