Omnicontact redirect_uri_mismatch与gmail帐户

时间:2015-02-10 11:33:29

标签: ruby-on-rails omnicontacts-gem

我正在使用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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

您现在应该可以通过访问本地计算机中的此URL:yourmachine.example.com:3000来访问本地rails应用程序。 Google现在接受此redirect_uri,因为它是一个有效的主机名,您应该能够恢复联系人。