我正在开发一个应用程序,允许用户使用Devise和Omniauth进行身份验证,然后将他的社交网络帐户连接到应用程序.我想添加Wordpress集成(他们的网站声明他们支持OAuth 2.0身份验证和REST API访问).
不幸的是,这个提供商没有Omniauth策略.我调查了一些其他的宝石并决定自己编写 – 它似乎并不那么复杂. The source code can be found here.
我添加了所有必需的信息(根据WordPress docs),然后我注册了应用程序ID和密码.我在这里遇到了我的第一个问题 – WordPress要求一个实时的公共域作为重定向URI.我不想使用一个 – 我想先在开发模式下测试,所以localhost对我来说很好.我输入了一个虚拟地址,然后将其更改回localhost(出乎意料!他们没有在更新时验证它,只是在创建时).
我已将凭据添加到初始化程序(config / initializers / devise.rb):
config.omniauth :wordpress, "my_app_id", "my_app_secret"
它似乎工作 – 我得到了我期望的身份验证对话框,它提到了我的应用程序.但当我点击“授权”并重定向到我的应用程序时,我收到一个错误,说明无效的凭据.
我已经检查了凭据,但它们是正确的(没有错别字,正确的顺序).我重置了应用秘密 – 没有运气.我创建了另外两个应用程序,但仍然没有.
我已经没有想法了.什么可能导致这样的错误?是否有可能是因为redirect_uri中的本地地址?
最佳答案 我怀疑这很容易错过,事实确实如此. WordPress’服务器使用JSON字符串进行响应,但响应未被解析为一个.因此,Omniauth gem无法在其中找到访问令牌,并且无法提高无效凭据错误.设置正确的内容类型就像一个魅力.