简短的问题: 在 Magento 中为管理区域实施 Google Api OAuth2 身份验证的最简洁方法是什么
长问题: 所有新的 Google API 都使用 OAuth2。php 客户端库在这里,它抽象了 OAuth2 处理 https://code.google.com/p/google-api-php-client/
过程很简单
- 用户是否有 AccessToken?
- 不
- 好的,使用客户端库创建登录 url
- 用户点击登录 url 链接,将他们带到谷歌登录
- 一旦经过身份验证,Google 将通过指定的重定向 url 重定向回 Magento
- Google 将 AccessToken 作为 url 的一部分发回。存储它。
- 使用此 AccessToken 调用各种 API
客户端库中的示例都是平面文件。因此,我正在寻找将其放入 MVC 结构的最佳方法……或者准确地说是 Magento。
让我们具体一点。它检索谷歌通讯录。到目前为止,我有:
- 一个名为 ContactsController 的管理控制器,带有索引操作。它做的第一件事是检查是否有访问令牌。如果没有访问令牌,它将转发到身份验证操作。
- auth 操作只是呈现一个块,该块具有由 google php 客户端库“createAuthUrl()”生成的 AuthUrl
- 单击链接时,谷歌登录页面会加载并登录
- Google 会重定向回我在代码中指定的 URL(以及 Google API 控制台https://code.google.com/apis/console)。他们还传回访问令牌。此 URL 必须是可预测的,因此它不能是管理区域 url,因为它们依赖于“key”url 参数。因此,我为 Google 创建了一个前端控制器和操作以重定向回。
- 在前端控制器中,我存储了 AccessToken。
- 然后我重定向回管理控制器 ContactsController 索引操作。它看到一个 AccessToken 并且应用程序实际上可以做一些事情。
我遇到的问题是我无法进行最终重定向。即使我使用的是 adminhtml 助手 getUrl 方法,它确实附加了“key”url 参数,但当我从前端重定向到后端时,我被踢到了仪表板。
有没有更好的方法在 Magento 中实现 Googles OAuth2?
如何重定向到直接管理员 URL?