- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 Devise
配置为将 omniauth 与 Facebook
和 Google
一起使用。它适用于 Facebook
但我遇到了 Google
的问题。
我一次又一次地收到这个错误:
ERROR -- omniauth: (google_oauth2) Authentication failure! invalid_credentials: OAuth2::Error, redirect_uri_mismatch:
{"error" : "redirect_uri_mismatch"}
[localhost] [127.0.0.1] [6a9377fe-d0b3-42] RuntimeError - Could not find a valid mapping for path "/users/auth/google_oauth2/callback":
devise (3.5.2) lib/devise/mapping.rb:49:in `find_by_path!'
我在 Google
控制台中尝试了几个 URI,但似乎都没有工作:
gem 文件
# Social Networks Authentification
gem 'omniauth'
gem 'omniauth-facebook'
gem 'omniauth-google-oauth2'
设计.rb
config.omniauth :facebook, ENV['OAUTH_FACEBOOK_ID'], ENV['OAUTH_FACEBOOK_SECRET'],
scope: 'public_profile', image_size: {height: 1600}, info_fields: 'name, id, first_name, last_name, gender, hometown, cover, email, link' # list of permissions
# Not working, "error" : "redirect_uri_mismatch"
config.omniauth :google_oauth2, ENV['OAUTH_GOOGLE_ID'], ENV['OAUTH_GOOGLE_SECRET']
omniauth_callbacks_controller.rb
def self.provides_callback_for(provider)
class_eval %Q{
def #{provider}
@user = User.find_for_oauth(env["omniauth.auth"], current_user)
if @user.persisted?
handle_redirect("devise.#{provider}_uid", "#{provider}".capitalize)
else
session["devise.#{provider}_data"] = env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
}
end
[:facebook, :google_oauth2].each do |provider|
provides_callback_for provider
end
def handle_redirect(_session_variable, kind)
# here we force the locale to the session locale so it siwtches to the correct locale
I18n.locale = session[:omniauth_login_locale] || I18n.default_locale
sign_in_and_redirect @user, event: :authentication
set_flash_message(:notice, :success, kind: kind) if is_navigational_format?
end
omniauth_controller.rb
class OmniauthController < ApplicationController
def localized
# Just save the current locale in the session and redirect to the unscoped path as before
session[:omniauth_login_locale] = I18n.locale
redirect_to user_omniauth_authorize_path(params[:provider])
end
end
routes.rb
devise_for :users, skip: [:session, :password, :registration, :confirmation], controllers: { omniauth_callbacks: 'omniauth_callbacks' }
localized do
get 'auth/:provider' => 'omniauth#localized', as: :localized_omniauth
devise_for :users, :path => 'accounts', skip: :omniauth_callbacks, :controllers => {sessions: 'sessions', registrations: 'registrations', passwords: 'passwords'}
end
用户.rb
devise :omniauthable, :omniauth_providers => [:facebook, :google_oauth2]
我在 local 和 production 都有问题。
谁能帮帮我?我真的不知道我还能做什么。
最佳答案
好了,终于知道是什么问题了……
'omniauth-google-oauth2'
gem 仅适用于 'omniauth-oauth2'
gem 的 1.3.1 版。
所以我像这样更改了我的 Gemfile:
# Social Networks Authentification
gem 'omniauth-oauth2', '~> 1.3.1' # Don't touch that unless you don't want Google omniauth to work!
gem 'omniauth-twitter'
gem 'omniauth-facebook'
gem 'omniauth-linkedin'
gem 'omniauth-google-oauth2' # Works only with omniauth-oauth2 v 1.3.1
现在一切正常!
见 this thread了解更多详情。
关于ruby-on-rails - 谷歌 OAuth 2.0 和设计 - "error": "redirect_uri_mismatch",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33807752/
我正在使用 oauth2 gem 进行谷歌登录验证。我的代码看起来像 omniauth.rb OmniAuth.config.logger = Rails.logger require "omniau
我在 Visual Studio Express 2012 for Web 中有一个网站。 当我尝试以下代码时,我不断收到来自 google 的错误,提示开发者控制台中列出的重定向 uri 不匹配:
无法登录到 firebase CLI。 firebase login 在浏览器中生成如下错误提示: The redirect URI in the request, http://localhost:
我们在尝试从 Google 获取 oAuth token 时遇到“redirect_uri_mismatch”错误: [client 127.0.0.1:49892] {\n "error" : "
我正在尝试使用 socialite 登录 google,我的 facebook 登录工作正常,所以我的 google 应用程序出现问题,任何帮助!!! 'google' => [ 'clie
我已经在我的应用程序中集成了用于登录的google ios SDK,并能够使用该SDK生成授权代码。尝试在服务器端使用相同的授权代码时,我不断收到redirect_uri_mismatch错误。在Go
我正在尝试遵循本指南:Using OAuth 2.0 for Installed Applications 我通过了第一部分,用户可以授权我的应用访问他们的 Google Drive。用户授予权限后,
尝试在我的网站上实现 hybridauth 2.4,除了 config.php 之外的所有代码都是开箱即用的,但我在使用 Google+ 时遇到了问题。我已经尝试了一切,并且正在慢慢失去它。 400
尝试使用 github api 时,我不断收到相同的 OAuth 错误。有时它会消失,但大多数时候它会留下。我曾尝试重置我的 key ,撤销所有 token ,清除 safari 缓存但没有运气。这是
我正在尝试通过分析 API 从 R 连接到谷歌分析。以下是我的代码。 library(RGoogleAnalytics) oauth_token <- Auth(client.id = "client
URL似乎正确(昨天最后更新了它们): 这些文件也是: omniauth.rb: provider :google_oauth2, 'MY_CLIENT_ID.apps.googleusercon
我关注了这个basic tutorial ,但我得到: Eroare:redirect_uri_mismatchThe redirect URI in the request: urn:ietf:wg
我在具有Google Play排行榜支持的Unity中创建了一个应用。我可以轻松地使其在Android上运行,然后我也转向OSX来为iPhone构建它。 首先我遇到一个问题,苹果不接受任何带有'_'字
我正在尝试在我的系统中实现一次性代码登录流程。应用包含两部分:1)向Google+请求一次性授权码的Android应用2)Rails 服务器在请求 header 中从 android 应用程序接收一次
我想编辑在 Google API 控制台中注册的用于 Google+ 登录的包 ID。 回答这个 question告诉我如何做到这一点,但我没有看到 API Access 下的 Client id 和
我正在尝试让 google plus 身份验证适用于网络应用程序,但不断出现 redirect_uri_mismatch 错误。我检查并重新检查了我在代码和谷歌开发设置中是否有匹配的重定向 url。
全部, 我在尝试通过 google 进行身份验证时收到 400 redirect_url_mismatch 错误。我通过 django 应用程序使用 python-socal-auth 来实现这个过程
我们根据此文档构建我们的 Web 应用程序并与 Google OAuth2 集成 Google Identity Services JavaScript SDK 我们想使用“popup”模式,但是当试
我遵循了这个 Gmail API Python 快速入门教程: https://developers.google.com/gmail/api/quickstart/python 我按照说明在 API
我正在尝试连接到 google drive,为此我正在使用 python pydrive 库。我已经按照文档编写了一个片段来连接谷歌驱动器。但我收到一个错误 错误:redirect_uri_misma
我是一名优秀的程序员,十分优秀!