我正在尝试弄清楚如何使用 OAuth 2.0 从我的网络应用程序访问 Google API。问题是,该协议要求开发人员注册redirect_uri(接收访问令牌的页面的 URL)。但我的应用程序可以分发给许多客户,并且可以托管在无数的服务器上。无法事先知道redirect_uri。
Google 为已安装的应用程序提供了另一种选择,但我也无法使用此变体。身份验证服务器在窗口标题中返回访问代码,并且无法从我们页面的 JavaScript 访问此信息(如果内容来自不同的服务器,则 JS 无法访问使用
window.open();
打开的窗口的内容)。
结论:
是否有任何建议,如何从运行在大量服务器上的distributable Web应用程序使用Google的OAuth 2.0?
您确定无法访问窗口标题吗?如果您的应用程序正在打开该窗口,它应该能够访问它。应该可以像在移动应用程序中那样以类似的方式执行此操作。
如果所有尝试都失败,您可以设置一个代理服务器(具有已知的重定向 URI)并将 Google 令牌分发给所有客户端。或者更好的是,每个应用程序都可以有自己的代理服务器 - 从其下载的服务器。但是,如果每个 OAuth 客户端只能有一个重定向 URI,则每个应用程序都必须是一个单独的 OAuth 客户端。