2012-04-17 114 views
4

我正在研究一个应用程序,允许用户使用Devise和Omniauth进行身份验证,然后将他的社交网络帐户连接到应用程序。我想添加Wordpress集成(他们的网站声明他们支持OAuth 2.0身份验证和REST API访问)。OAuth 2.0的Wordpress策略

不幸的是,这个提供者没有Omniauth策略。我看了一些其他的宝石,并决定写我自己的 - 它似乎并不复杂。 The source code can be found here

我已经添加了所有必需的信息(根据Wordpress docs),然后我已经注册了一个应用ID和密码。我在这里遇到了我的第一个问题--WordPress要求将直播,公有领域作为重定向URI。我不想使用它 - 我想首先在开发模式下测试,所以localhost对我来说很好。我输入了一个虚拟地址,然后将其更改回localhost(意外!他们没有在更新时验证它,只是在创建时)。

我已经添加了凭证到我的初始化(配置/初始化/ devise.rb):

config.omniauth :wordpress, "my_app_id", "my_app_secret" 

它似乎工作 - 我得到了验证对话框我所料,它提到了我的申请。但是当我点击'授权'并被重定向到我的应用程序时,我收到一个错误,说无效凭据

我检查了凭据,但他们是正确的(没有错别字,正确的顺序)。我已重置应用程序的秘密 - 没有运气。我创建了另外两个应用程序,但仍然没有。

我已经用完了想法。什么会导致这样的错误?是否有可能是因为redirect_uri中的本地地址?

回答

2

我怀疑这是一件容易遗漏的事情,事实真相如此。 WordPress的服务器响应与JSON字符串,但响应不被解析为一个。因此,Omniauth宝石无法在其中找到访问令牌,并且正在提高无效凭据错误。设置正确的内容类型就像魅力一样。

+0

我正面临类似的问题。我有一个自定义的WordPress安装。当我尝试使用OAuth2连接到wordpress安装时,出现**无效凭证**错误。你能帮我设置内容类型吗? – sshah 2015-05-13 05:57:46