Wordpress strategy for OAuth 2.0



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

不幸的是,该提供商没有Omniauth策略。我研究了其他一些宝石,并决定写我自己的宝石 - 它看起来并不那么复杂。源代码可以在这里找到。

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

我已将凭据添加到我的初始值设定项(config/initializers/devise.rb):

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

它似乎有效 - 我得到了我期望的身份验证对话框,它提到了我的应用程序。但是当我单击"授权"并被重定向到我的应用程序时,我收到一条错误消息,指出凭据无效

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

我已经没有想法了。什么会导致这种错误?有没有可能是因为redirect_uri的本地地址?

我怀疑这是很容易错过的东西,确实如此。Wordpress的服务器使用JSON字符串进行响应,但响应未被解析为一个。因此,Omniauth gem 在其中找不到访问令牌,并引发无效凭据错误。设置正确的内容类型就像一个魅力。

最新更新