我正在使用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
我该如何解决这个问题?
答案 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,因为它是一个有效的主机名,您应该能够恢复联系人。