【发布时间】:2016-10-19 21:19:34
【问题描述】:
我正在使用前端的 AngularJS 和服务器端的带有 Flask 的 Python 构建一个 Web 应用程序。我正在尝试按照google developers site 上的文档实现 OpenID/OAuth 登录功能。我首先构建服务器端代码(使用 Postman 测试时一切正常),然后开始在前端工作。现在,我有一种感觉,我添加此功能所遵循的设计非常糟糕。以下是我面临的问题:
按照 Google OAuth 文档,我设置了我的服务器端流程,有点像这样:
gAuth: 这是我的 Flask 应用程序中的一个函数,当用户单击 Google 登录按钮时,它将由来自 Angular 的 GET 请求调用。
它向 Google 授权端点发送 GET 请求以获取授权码。对此请求的响应有一个文本字段,其中包含一个显示 google 登录页面的 HTML 代码。我将其返回给 Angular(因为这是调用此函数的地方)。然后 Angular 将其呈现在浏览器上,供用户输入凭据。一旦用户输入凭据并授权我的应用程序,Google 就会使用 GET 请求将身份验证代码发送到我的应用程序 requestToken 中的另一个函数,因为那是我用于 Google OAuth 的 redirect_URI。在这一点上,我完全脱离了 Angular。现在 requestToken 使用身份验证码向 Google 的令牌端点发送 POST 请求,以便将其交换为 id_token。现在 requestToken 有了 id_token 并做了它应该做的事情。
我从 requestToken 函数返回一个值“1”,但这会转到 Google 代码,因为这是对 requestToken 的请求的来源。
现在,问题是如何让前端知道 OAuth 一切正常,并且用户必须被重定向到主页。我希望 requestToken 的返回值转到 Angular。我想问这是否可能,但我的常识告诉我这是不可能的。但是,我想知道是否有一种方法可以将请求从 Flask 发送到 Angular。非常感谢任何帮助。
【问题讨论】:
标签: javascript python angularjs google-app-engine oauth