4

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

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

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

我已将凭据添加到我的初始化程序(config/initializers/devise.rb):

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

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

我检查了凭据,但它们是正确的(没有拼写错误,顺序正确)。我已经重置了应用程序机密 - 不走运。我已经创建了另外两个应用程序,但仍然没有。

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

4

1 回答 1

2

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

于 2012-04-20T12:52:05.317 回答