use*_*210 6 php google-api magento oauth-2.0 google-api-client
简短问题: 在Magento中为管理区域实施Google Api OAuth2身份验证的最简洁方法是什么?
长篇问题: 所有新的Google API都使用OAuth2.php客户端库在这里,它抽象OAuth2处理 https://code.google.com/p/google-api-php-client/
这个过程很简单
客户端库中的示例都是平面文件.所以我正在寻找将其融入MVC结构的最佳方式......或者Magento是精确的.
让我们具体一点.它用于检索Google通讯录.到目前为止,我有:
我遇到的问题是我不能做最后的重定向.即使我使用adminhtml帮助器getUrl方法,它附加了'key'url参数,当我从前端重定向到后端时,我被踢到仪表板.
有没有更好的方法在Magento中实现Googles OAuth2?
如何重定向到直接管理URL?
仅呈现登录链接的整个身份验证操作是毫无意义的。
一旦 adminhtml_contacts/index 操作意识到没有访问令牌,它就可以使用 Google_Client::createAuthUrl 来确定应将用户发送到哪里。那么为什么还要费心将其放入实际链接中呢?相反,我只是立即将它们重定向到 authUrl。
如果用户已经登录谷歌,那么他们不需要做任何事情。Google 看到他们已登录并立即重定向回我指定的(且可预测的)前端控制器操作。
此前端控制器操作存储访问令牌,我重定向回 adminhtml_contacts/index 操作。由于上面指定的“key”url 参数跨站点请求伪造保护问题,它仍然无法正常工作。
为了解决这个问题,我使用管理控制器中的 preDispatch 挂钩关闭了此操作的密钥。
public function preDispatch()
{
if ($this->getRequest()->getActionName() == 'index') Mage::getSingleton('adminhtml/url')->turnOffSecretKey();
parent::preDispatch();
}
Run Code Online (Sandbox Code Playgroud)
它并不理想,但有效,意味着我实际上可以开始处理 api,而不是搞乱身份验证。
现在要掌握没有客户端抽象的 Contacts API,因此我必须深入研究 SimpleXml 命名空间问题和繁琐的 DOMDocument 操作。嘿嗬。
| 归档时间: |
|
| 查看次数: |
4137 次 |
| 最近记录: |