简体   繁体   English

heroku重定向uri假

[英]heroku redirect uri false

I have app with oauth2, omniauth and fb_graph and works perfect local. 我有带有oauth2,omniauth和fb_graph的应用程序,并且可以在本地完美运行。 I have development, test and production enviroments. 我有开发,测试和生产环境。 my omniauth.rb is 我的omniauth.rb是

  if Rails.env.production?
 provider :twitter, '***', '***'
 provider :facebook, '***', '***', {:scope => 'user_about_me,friends_about_me,user_activities,friends_activities,user_birthday,friends_birthday,user_checkins,friends_checkins,user_education_history,friends_education_history,user_events,friends_events,user_groups,friends_groups,user_hometown,friends_hometown,user_interests,friends_interests,user_likes,friends_likes,user_location,friends_location,user_notes,friends_notes,user_online_presence,friends_online_presence,user_photo_video_tags,friends_photo_video_tags,user_photos,friends_photos,user_questions,friends_questions,user_relationships,friends_relationships,user_relationship_details,friends_relationship_details,user_religion_politics,friends_religion_politics,user_status,friends_status,user_videos,friends_videos,user_website,friends_website,user_work_history,friends_work_history,email,read_friendlists,read_insights,read_mailbox,read_requests,read_stream,xmpp_login,ads_management,create_event,manage_friendlists,manage_notifications,offline_access,publish_checkins,publish_stream,rsvp_event,publish_actions,manage_pages,user_subscriptions', :client_options => {:ssl => {:ca_file => "/usr/lib/ssl/certs/ca-certificates.crt"}}}
 elsif Rails.env.development?
 provider :twitter, '******',     '******'
 provider :facebook, '******', '*******', :scope => 'user_about_me,friends_about_me,user_activities,friends_activities,user_birthday,friends_birthday,user_checkins,friends_checkins,user_education_history,friends_education_history,user_events,friends_events,user_groups,friends_groups,user_hometown,friends_hometown,user_interests,friends_interests,user_likes,friends_likes,user_location,friends_location,user_notes,friends_notes,user_online_presence,friends_online_presence,user_photo_video_tags,friends_photo_video_tags,user_photos,friends_photos,user_questions,friends_questions,user_relationships,friends_relationships,user_relationship_details,friends_relationship_details,user_religion_politics,friends_religion_politics,user_status,friends_status,user_videos,friends_videos,user_website,friends_website,user_work_history,friends_work_history,email,read_friendlists,read_insights,read_mailbox,read_requests,read_stream,xmpp_login,ads_management,create_event,manage_friendlists,manage_notifications,offline_access,publish_checkins,publish_stream,rsvp_event,publish_actions,manage_pages,user_subscriptions', :client_options => {:ssl => {:ca_file => "/etc/ssl/certs"}}

localy after authentication follow authorization with this redirect uri 身份验证后的本地区域使用此重定向uri遵循授权

 http://www.facebook.com/dialog/permissions.request?_path=permissions.request&app_id=*******&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Ffacebook%2Fcallback&display=page&response_type=code&perms=user_about_me%2Cfriends_about_me%2Cuser_activities%2Cfriends_activities%2Cuser_birthday%2Cfriends_birthday%2Cuser_checkins%2Cfriends_checkins%2Cuser_education_history%2Cfriends_education_history%2Cuser_events%2Cfriends_events%2Cuser_groups%2Cfriends_groups%2Cuser_hometown%2Cfriends_hometown%2Cuser_interests%2Cfriends_interests%2Cuser_likes%2Cfriends_likes%2Cuser_location%2Cfriends_location%2Cuser_notes%2Cfriends_notes%2Cuser_online_presence%2Cfriends_online_presence%2Cuser_photo_video_tags%2Cfriends_photo_video_tags%2Cuser_photos%2Cfriends_photos%2Cuser_questions%2Cfriends_questions%2Cuser_relationships%2Cfriends_relationships%2Cuser_relationship_details%2Cfriends_relationship_details%2Cuser_religion_politics%2Cfriends_religion_politics%2Cuser_status%2Cfriends_status%2Cuser_videos%2Cfriends_videos%2Cuser_website%2Cfriends_website%2Cuser_work_history%2Cfriends_work_history%2Cemail%2Cread_friendlists%2Cread_insights%2Cread_mailbox%2Cread_requests%2Cread_stream%2Cxmpp_login%2Cads_management%2Ccreate_event%2Cmanage_friendlists%2Cmanage_notifications%2Coffline_access%2Cpublish_checkins%2Cpublish_stream%2Crsvp_event%2Cpublish_actions%2Cmanage_pages%2Cuser_subscriptions&fbconnect=1&from_login=1&client_id=******

and this is the right redirect uri. 这是正确的重定向uri。

But in heroku after authentication follow authorization with this redirect uri 但是在heroku中,在身份验证之后,使用此重定向uri遵循授权

 http://www.facebook.com/dialog/permissions.request?_path=permissions.request&app_id=******&redirect_uri=http%3A%2F%2Feap2.heroku.com%2Fauth%2Ffacebook%2Fcallback&display=page&response_type=code&perms=email%2Coffline_access&fbconnect=1&from_login=1&client_id=*******

and this is false; 这是错误的; apparently missing permissions. 显然缺少权限。 I don't know why. 我不知道为什么

ps my gemfile ps我的gemfile

  source 'http://rubygems.org'

  gem 'rails', '3.0.11'
  gem 'pg'
  gem 'devise'
  gem "recaptcha", :require => "recaptcha/rails"
  gem 'sinatra'
  gem 'mogli'
  gem 'gravatar_image_tag', '1.0.0.pre2'
  gem 'rails-i18n'
  gem 'will_paginate', '~> 3.0.pre2'
  gem 'RedCloth'
  gem 'coderay'
  gem 'validate_url'
  gem 'thin'
  gem 'acts-as-taggable-on', '~> 2.2.2'
  gem 'omniauth'
  gem 'omniauth-twitter'
  gem 'omniauth-facebook'
  gem 'omniauth-openid'
  gem 'omniauth-github'
  gem 'multi_json'
  gem 'dalli'
  gem 'oauth2'
  gem 'fb_graph'

  group     :test do
     gem 'sqlite3'
  end

my production.rb before 我之前的production.rb

  config.cache_classes = true
  config.cache_store = :dalli_store
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true
  config.action_mailer.default_url_options = { :host => 'eap2.heroku.com' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
     :address              => "smtp.gmail.com",
     :port                 => 587,
     :domain               => 'gmail.com',
     :user_name            => '****@gmail.com',
     :password             => '*****',
     :authentication       => 'plain',
     :enable_starttls_auto => true  }
  config.action_dispatch.x_sendfile_header = "X-Sendfile"
  config.i18n.fallbacks = true
  config.active_support.deprecation = :notify
  provider :twitter, '***', '***'
  provider :facebook, '***', '***', :scope => user_about_me,friends_about_me,user_activities,friends_activities
 end

and my production rb after solution 解决后我的生产rb

  config.cache_classes = true
  config.cache_store = :dalli_store
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true
  config.action_mailer.default_url_options = { :host => 'eap2.heroku.com' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
     :address              => "smtp.gmail.com",
     :port                 => 587,
     :domain               => 'gmail.com',
     :user_name            => '****@gmail.com',
     :password             => '*****',
     :authentication       => 'plain',
     :enable_starttls_auto => true  }
  config.action_dispatch.x_sendfile_header = "X-Sendfile"
  config.i18n.fallbacks = true
  config.active_support.deprecation = :notify
  end

This means that Rails needs the configurations for twitter and facebook only in the file config/initializers/omniauth.rb and not in the file config/environements/production.rb. 这意味着Rails仅需要在config / initializers / omniauth.rb文件中配置twitter和facebook,而在config / environements / production.rb文件中则不需要。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM