0

我正在使用 Omnicontact gem,但在使用 gmail 时遇到了一些问题:我总是收到“redirect_uri_mismatch”错误!

这是'config/inizializers/omnicontacts.rb'的代码

  3 require "omnicontacts"
  4
  5 Rails.application.middleware.use OmniContacts::Builder do
  6   importer :gmail, "MySecretId", "MySecretKey", {:redirect_path => "/invites/gmail/contact_callback" }
  7 end

'invites_controller.rb' 控制器代码:

  3     def index
  4         @contacts = request.env['omnicontacts.contacts']
  5         respond_to do |format|
  6             format.html
  7         end
  8     end

Routes.rb 代码:

  3     get "/invites/:provider/contact_callback" => "invites#index"
  4     get "/contacts/failure" => "invites#failure"
  5     root :to => "invites#index"

这是谷歌应用程序的重定向 uri:

https://www.example.com/oauth2callback
https://127.0.0.1:3000/invites/gmail/contact_callback
https://127.0.0.1/invites/gmail/contact_callback

我该如何解决这个问题?

4

1 回答 1

0

我知道这个问题有点老了,但这种情况正在发生,因为 gmail 不允许您将 ip 地址作为重定向 uri。您将需要添加类似这样的内容。yourmachine.example.com:3000/invites/gmail/contact_callback 然后在您的主机文件中,您需要添加以下行: 192.168.1.2 devmachine yourmachine.example.com 其中 192.168.1.X 是您的本地 IP 地址。

您现在应该可以通过yourmachine.example.com:3000 在您的本地机器上访问这个 url: 来访问您的本地 Rails 应用程序。Google 现在将接受此 redirect_uri,因为它是一个有效的主机名,您应该能够找回您的联系人。

于 2015-10-21T21:16:24.053 回答