我正在使用 ruby 版本 2.2.10p489 和 Rails 版本 5.1.6。我正在尝试使用omnicontacts gem 使用oauth2 流将Hotmail 联系人导入我的应用程序。
我按照https://github.com/Diego81/omnicontacts中列出的说明进行操作。
下面是我的config/initializers/omnicontacts.rb
配置文件:
require "omnicontacts"
Rails.application.middleware.use OmniContacts::Builder do
importer :hotmail, ENV['MICROSOFT_APP_ID'], ENV['MICROSOFT_APP_SECRET'], {:redirect_path => "/contacts/import/hotmail_or_other/"}
end
当我按照 Diego 在 omnicontacts 页面上的说明访问https://6663cb10.ngrok.io/contacts/hotmail时,我没有被重定向到 Microsoft 的登录页面。相反,我会使用以下参数自动发送到 Contacts 控制器的显示操作:
{"error_message"=>"not_authorized", "importer"=>"hotmail", "id"=>"failure"}
如果我输入 oauth2 网址
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=*CLIENT ID HERE*&response_type=id_token&redirect_uri=https%3A%2F%2F6663cb10.ngrok.io%2Fcontacts%2Fimport%2Fhotmail_or_other%2F&scope=openid&response_mode=fragment&state=12345&nonce=678910
直接进入我的网络浏览器,我可以输入我的电子邮件地址,但是当我点击“下一步”时,我会再次自动发送到联系人控制器的显示操作,并带有以下参数:
{"error_message"=>"not_authorized", "importer"=>"hotmail", "id"=>"failure"}
下面是我的 Microsoft 应用程序配置,
重定向网址:https://6663cb10.ngrok.io/contacts/import/hotmail_or_other/
登出网址:https://6663cb10.ngrok.io/logout
委派权限:Contacts.Read、User.Read
主页网址:https://6663cb10.ngrok.io/login
我还在控制台中注意到以下内容,但不知道如何解决这个问题或者它是否真的相关:
app/controllers/contacts_controller.rb:43:in `show'
Started HEAD "/contacts/hotmail" for 163.172.103.81 at 2019-01-05 15:00:03 -0500
Cannot render console from 163.172.103.81! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Started HEAD "/contacts/hotmail" for 2a02:4780:1:3::15 at 2019-01-05 15:00:56 -0500
Cannot render console from 2a02:4780:1:3::15! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Started HEAD "/contacts/hotmail" for 51.15.164.30 at 2019-01-05 15:01:02 -0500
Cannot render console from 51.15.164.30! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Started HEAD "/contacts/hotmail" for 51.15.164.31 at 2019-01-05 15:04:03 -0500
Cannot render console from 51.15.164.31! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
这是我的 config/routes.rb 文件:
Rails.application.routes.draw do
mount Ckeditor::Engine => '/ckeditor'
get 'password_resets/new'
get 'password_resets/edit'
get 'sessions/new'
root 'static_pages#home'
get '/help', to: 'static_pages#help'
get '/about', to: 'static_pages#about'
get '/contact_us', to: 'static_pages#contact_us'
get '/signup', to: 'users#new'
post '/signup', to: 'users#create'
get '/login', to: 'sessions#new'
post '/login', to: 'sessions#create'
delete '/logout', to: 'sessions#destroy'
get '/pictures/new/:id/imageable_type/:type', to: 'pictures#new', as: 'new_picture'
get '/contacts/import/google/start', to: 'contacts#import_from_google_start', as: 'new_from_google_contacts'
get '/contacts/import/google', to: 'contacts#import_from_google', as: 'create_from_google_contacts'
get '/contacts/import/hotmail_or_other/start', to: 'contacts#import_hotmail_and_or_yahoo_contacts_start', as: 'new_from_hotmail_and_or_yahoo_contacts'
get '/contacts/import/hotmail_or_other/', to: 'contacts#import_hotmail_and_or_yahoo_contacts', as: 'create_from_hotmail_and_or_yahoo_contacts'
resources :account_activations, only: [:edit]
resources :password_resets, only: [:new, :create, :edit, :update]
resources :pictures, only: [ :create, :update, :destroy]
resources :contacts
resources :users
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
结尾