当前位置: 首页 > 知识库问答 >
问题:

使用googleAPI作为登录错误的Rails应用程序

翁良弼
2023-03-14

我一步一步地遵循这篇论文:https://richonrails.com/articles/google-authentication-in-ruby-on-rails/我创建了一个全新的rails应用程序来测试。但是我一直得到同样的错误:错误:invalid_request

重定向uri的参数值无效:不允许原始IP地址:http://0.0.0.0:3000/auth/google_oauth2/callbackOmniAuth。配置。记录器=轨道。记录器

omniauth。铷

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :google_oauth2, 'CLIENT-ID', 'SECRET', {client_options: {ssl:
    {ca_file: Rails.root.join("cacert.pem").to_s}}}
end

routes.rb

Rails.application.routes.draw do
   get 'auth/:provider/callback', to: 'sessions#create'
   get 'auth/failure', to: redirect('/')
   get 'signout', to: 'sessions#destroy', as: 'signout'
   resources :sessions, only: [:create, :destroy]
   resource :home, only: [:show]
   root to: "home#show"
end

使用者铷

class User < ApplicationRecord
  def self.from_omniauth(auth)
  where(provider: auth.provider, uid: auth.uid).first_or_initialize.tap do 
|user|
  user.provider = auth.provider
  user.uid = auth.uid
  user.name = auth.info.name
  user.oauth_token = auth.credentials.token
  user.oauth_expires_at = Time.at(auth.credentials.expires_at)
  user.save!
  end
end

结束

应用程序控制器。铷

class ApplicationController < ActionController::Base
    protect_from_forgery with: :exception
    helper_method :current_user

    def current_user
        @current_user ||= User.find(session[:user_id]) if session[:user_id]
    end
end

ontroller.rb类

  def destroy
     session[:user_id] = nil
     redirect_to root_path
   end
end

请帮帮我!谢谢!

共有2个答案

阎功
2023-03-14

在google dev API仪表板中,您必须将回调url更改为http://0.0.0.0...

开发环境中的一个解决方法是将回调url更改为http://localhost:3000/auth/google_oauth2/callback

东郭凯捷
2023-03-14

安迪的答案将只工作,如果你也编辑你的系统的 /etc/hosts文件重定向0.0.0.0到一个URL结尾的非原始地址,如. com或. net,这是什么错误"消息原始IP地址不允许"是指。如果您同时完成了这两件事情,您的应用应该可以在您的开发环境中工作。

为此,请使用首选文本编辑器打开/etc/hosts。由于这是一个受保护的系统文件,您需要处于管理模式。例如:$sudo vi/etc/hosts

将该行添加到文件底部:

0.0.0.0  my-custom-domain.com

重新启动shell会话和开发服务器,使更改生效。

自定义重定向url(my-custom-domain.com)需要授权。回到Google Dev API仪表板,将http://my-custom-domain.com:3000/auth/google_oauth2/callback添加到您授权的重定向URI。

 类似资料:
  • 我正在尝试使用rails创建新项目,但它显示错误。我正在处理mac及其显示错误 $rails新特快专递

  • 我使用ASP. NET Core 3.1 Blazor网络组装应用程序(Visual Studio 2019创建的默认应用程序)。 我连接了ASP。NET标识用于用户管理,添加了脚手架标识项(登录、注册等) 当我单击“注册”时,应用程序会正确重定向到 但是如果我单击登录,应用程序会重定向到 这是错误的(我希望<代码>https://localhost:44349/Identity/Account/

  • 我被Michael Hartl在Cloud 9上的Ruby on Ralis(第三版)卡住了。 我试图让heroku应用程序工作,但我得到了: 应用错误 应用程序中出现错误,无法提供您的页面。请稍后再试。 如果您是应用程序所有者,请查看日志以了解详细信息。 正如克洛伊建议的那样,我已经更改了“sass rails”版本并更新了“sass rails” 现在提交文件: 正如ecretmaster建议

  • 首先,我想让你知道,我是新来的Symfony。我在路上把我的PHP项目从我自己的“基本”MVC转到SimfOn.该项目已经运行良好,但我在适应Symfony时遇到了一些问题。 我从基本的框架开始,make: user和make: auth。模板运行良好。但是我未能将登录过程转换为AJAX和JSON。 我遵循了这个官方教程:https://symfonycasts.com/screencast/ap

  • 我对GoogleAPI有些问题。 这是错误。 条件:jdk 1.8,Tomcat 8.5 请帮我解决这个错误。

  • 在尝试使用Facebook登录时,我一直看到这样的错误。 我检查了一切,包括设置pList 并遵循此链接中的解决方案此应用程序的开发人员没有正确设置此应用程序的Facebook登录? 通过将“是否要使此应用及其所有live功能可供公众使用?”设置为“是” 但是后来这个图像出现了。 当我第一次尝试使用facebook登录时,甚至不需要将实时功能转向YES来使其工作,我想知道哪里出错了。