尝试使用 Rails 中的 Gmail API 进行身份验证时,出现 No route matching [GET] "/auth/google_oauth2" 错误。
按照这篇文章https://www.twilio.com/blog/2014/09/gmail-api-oauth-rails.html,我正在实现 Gmail API 集成。
代码似乎是正确的。但不知道是什么问题。
在路由文件中:
root to: 'visitors#index'
if defined?(Devise)
devise_for :users, :controllers => { :registrations => "registrations", :passwords => "passwords", omniauth_callbacks: 'omniauth_callbacks' }
devise_scope :user do
get 'auth/:provider/callback', :to => 'users/omniauth_callbacks#facebook'
end
end
get "/auth/:provider/callback" => "candidates#authenticate_from_google"
Run Code Online (Sandbox Code Playgroud)
在 rake 路线中,我什至也有路线。
GET /auth/:provider/callback(.:format) candidates#authenticate_from_google
Run Code Online (Sandbox Code Playgroud)
在 Gemfile 中:-
gem "omniauth"
gem "omniauth-linkedin"
gem "jwt", "~> 1.4.1"
gem "linkedin-scraper", "~> 0.1.5"
gem "omniauth-facebook"
gem "omniauth-google-oauth2"
gem 'signet' …Run Code Online (Sandbox Code Playgroud) 我在创造继Railscast要求规格http://railscasts.com/episodes/257-request-specs-and-capybara
在我的应用程序中,用户使用OmniAuth的Google OpenID帐户登录(http://railscasts.com/episodes/241-simple-omniauth).我如何使用RSpec和Capybara进行测试?当我的应用程序重定向到Google登录页面时,出现以下错误:
ActionController::RoutingError:
No route matches "/accounts/o8/ud"
Run Code Online (Sandbox Code Playgroud)
它似乎不允许重定向远离应用程序,所以我该如何测试呢?
我正在尝试使用Rails,Authlogic和Omniauth让Facebook登录我的应用程序.我正在尽可能精确地遵循http://railscasts.com/episodes/235-omniauth-part-1的第一步.
我有:
omniauth宝石,运行bundle install. user_id,provider和uid.match '/auth/:provider/callback' => 'authentications#create'添加到config/initializers/omniauth.rb:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, '20...my_app_id', 'bc...my_app_secret'
end
Run Code Online (Sandbox Code Playgroud)然后服务器无法重新启动:
/Users/san/.rvm/gems/ruby-1.9.2-p0/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206:
in 'const_missing_from_s3_library': uninitialized constant
OmniAuth::Strategies::Facebook (NameError)
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rake-0.9.2/lib/rake/ext/module.rb:36:in 'const_missing'
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/omniauth-1.0.0/lib/omniauth/builder.rb:22:in 'const_get'
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/omniauth-1.0.0/lib/omniauth/builder.rb:22:in 'provider'
from /Users/san/Documents/sanj/myapp/config/initializers/omniauth.rb:2:in 'block in <top (required)>'
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.3/lib/rack/builder.rb:46:in 'instance_eval'
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.3/lib/rack/builder.rb:46:in 'initialize'
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/omniauth-1.0.0/lib/omniauth/builder.rb:7:in 'initialize'
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.10/lib/action_dispatch/middleware/stack.rb:33:in 'new'
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.10/lib/action_dispatch/middleware/stack.rb:33:in 'build'
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.10/lib/action_dispatch/middleware/stack.rb:79:in 'block in build'
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.10/lib/action_dispatch/middleware/stack.rb:79:in 'each'
from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.10/lib/action_dispatch/middleware/stack.rb:79:in 'inject' …Run Code Online (Sandbox Code Playgroud) 我目前正在使用: gem "omniauth", '0.3.2'
我正在尝试升级到omniauth 1.0.0,将以上内容替换为:
gem 'omniauth-github', :git => 'git://github.com/intridea/omniauth-github.git' # Core, requires a OA Stratedgy gem for each provider
gem 'omniauth-facebook', :git => 'git://github.com/mkdynamic/omniauth-facebook.git' # FB OmmiAuth Stratedgy
gem 'omniauth-contrib', :git => 'git://github.com/intridea/omniauth-contrib.git' # TWITTER OmmiAuth Stratedgy
Run Code Online (Sandbox Code Playgroud)
但是当我捆绑安装/更新时遇到错误:
$ bundle install
Updating git://github.com/intridea/omniauth-github.git
Updating git://github.com/mkdynamic/omniauth-facebook.git
Updating git://github.com/intridea/omniauth-contrib.git
Fetching source index for http://rubygems.org/
Bundler could not find compatible versions for gem "hashie":
In snapshot (Gemfile.lock):
hashie (1.1.0)
In Gemfile:
omniauth-facebook depends on
hashie (~> 1.2)
Running `bundle update` will …Run Code Online (Sandbox Code Playgroud) 这是我第一次尝试使用Omniauth.当我从github 测试https://github.com/pt/devise-omniauth-example这个例子时我遇到了一个错误
.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `require': no such file to load -- openid/store/filesystem (LoadError)
Run Code Online (Sandbox Code Playgroud)
这是我的Gemfile内容
source 'http://rubygems.org'
gem 'rake'
gem 'rails'
gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'devise', :git => 'git://github.com/plataformatec/devise', :branch => 'master'
gem "omniauth", "1.0.1"
gem 'paperclip'
gem "simple_form", "~> 1.5.2"
gem 'twitter_oauth', '0.4.3'
gem "rest-client", "1.6.7", :require => "restclient"
gem "sluggable"
group :development, :test do
gem 'rspec-rails'
gem 'fixjour'
end
Run Code Online (Sandbox Code Playgroud)
我搜索网络但没有运气.
我正在开始一个新的应用程序,我想与Google Apps集成.
我希望让用户通过他们的Google帐户登录,并访问其域的Google API(列出所有域用户,并允许他们登录并共享相同的数据).
我从来没有这样做过,所以我有点困惑,我需要执行哪些步骤,我在网上阅读了一些文档,我也看了一下omniauth.
要求:
在我看来,我需要做的就是:*当用户确认Google会将用户重定向到我的应用程序的回调时*集成一个OpenID客户端(例如omniauth)*我现在有一个可用于查询的令牌谷歌API
我对吗?我还看了一下这篇文章,但似乎不是我正在搜索的内容,我事先无法知道用户域是什么.
也许我将谷歌应用程序帐户的gmail帐户混淆,使用后者用户能够使用自己的帐户登录,或者他们将只共享整个域的一个帐户?
omniauth完成这种登录是正确的宝石吗?
谢谢!
嗨,我想在我的应用程序上集成设计和omniauth登录.我正在尝试使用omniauth-google-oauth2,我按照本教程中的内容进行操作https://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview
我这么做,但我一直收到谷歌错误消息
Error: invalid_request
Missing required parameter: client_id
Learn more
Request Details
response_type=code
scope=https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile
redirect_uri=http://localhost:3000/users/auth/google_oauth2/callback
access_type=offline
approval_prompt=
state=50665ea3f96dc12e2189e93e1bc40592fc35ce5167d462e0
client_id=
Run Code Online (Sandbox Code Playgroud)
有谁能够帮我?
我正在寻找帮助测试黄瓜的omniauth认证.我尝试过一个教程(http://samuelmullen.com/2011/05/simple-integration-testing-with-cucumber-and-omniauth/),但似乎根本没有调用会话控制器.
这是我到目前为止:
功能/支持/ env.rb:
Capybara.default_host = 'example.org'
OmniAuth.config.test_mode = true
OmniAuth.config.add_mock(:twitter, {
:uid => '12345',
:info => {
:name => 'twitteruser',
}
})
OmniAuth.config.add_mock(:facebook, {
:uid => '12345',
:info => {
:name => 'facebookuser'
}
})
Run Code Online (Sandbox Code Playgroud)
步骤定义:
Given /^I am signed in with provider "(.*)"$/ do |provider|
visit "/auth/#{provider.downcase}"
end
Run Code Online (Sandbox Code Playgroud)
场景:
Scenario: a user can log into facebook
Given I am signed in with provider "facebook"
And I am on the profile page for "facebookuser"
Then I should …Run Code Online (Sandbox Code Playgroud) 我正在将我的应用程序迁移到4.1并遇到此错误的一些麻烦:
Failure/Error: get :facebook
ActiveModel::MassAssignmentSecurity::Error:
Can't mass-assign protected attributes for Delayed::Backend::ActiveRecord::Job: priority, queue, payload_object
# ./app/models/user.rb:457:in `subscribe_to_mailchimp'
# ./app/controllers/users/omniauth_callbacks_controller.rb:14:in `facebook'
# ./config/initializers/log_formatter.rb:22:in `block (2 levels) in <top (required)>'
# ./config/initializers/log_formatter.rb:21:in `block in <top (required)>'
# ./spec/controllers/users/omniauth_callbacks_controller_spec.rb:23:in `block (3 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)
规格:
describe Users::OmniauthCallbacksController, ci: true do
describe "when authenticating" do
let(:user) do
Fabricate(:user)
end
let(:social_media_account) do
Fabricate(:social_media_account, uid: "12345", provider: "facebook", user: user)
end
before do
term = Fabricate(:term, name: "application")
user.terms << term
Fabricate(:project)
end
it "redirects …Run Code Online (Sandbox Code Playgroud)