質問編集履歴

1 StackOverFlowの件追加

hrc

hrc score 54

2016/08/19 16:19  投稿

OmniauthのGoogleApi設定でError: redirect_uri_mismatch
(StackOverFlowにも投稿しています)  
RailsのアプリでGoogleのOauthを入れようとしてます。
一通り設定してからGoogle+のソーシャルログインリンクボタンを押したところ
![google oauth](e9aa2584d22d0457353d2ae68e34f3ce.png)
となりました。
各ソースは以下の通りです。まずGemfile。
```ruby
# Devise & Omniauth
gem 'devise'
gem 'omniauth'
gem 'omniauth-facebook'
gem 'omniauth-twitter'
gem 'omniauth-google-oauth2'
```
コントローラーはこちらです。
```ruby
class Users::OmniauthCallbacksController < Devise::RegistrationsController
   def google
     @user = User.find_for_google(request.env['omniauth.auth'])
     if @user.persisted?
       flash[:notice] = I18n.t 'devise.omniauth_callbacks.success', kind: 'Google'
       sign_in_and_redirect @user, event: :authentication
     else
       session['devise.google_data'] = request.env['omniauth.auth']
       redirect_to new_user_registration_url
     end
 end
```
Viewはこちらです。
```ruby
- if devise_mapping.omniauthable?
   = link_to image_tag('facebook.png'), user_omniauth_authorize_path(:facebook)
   = link_to image_tag('twitter.png'), user_omniauth_authorize_path(:twitter)
   = link_to image_tag('google.png'), user_omniauth_authorize_path(:google)
   br
```
Route.rbはこちらです。
```ruby
Rails.application.routes.draw do
get 'home/index'
devise_for :users, skip: [:session, :password, :registration], controllers: { omniauth_callbacks: "users/omniauth_callbacks" }
scope "(:locale)", locale: /en|ja/ do
  get '/' => 'frontpage#index'
  get 'restaurant/' => 'restaurant#index'
  get 'restaurant/:id' => 'restaurant#show'
  devise_for :users, skip: [:omniauth_callbacks]
end
```
最後にGoogleDeveloperの設定です。
![google oauth](253bf798236e3daf46d49e1a6c4310e4.png)
恐らく、リダイレクト先が間違っていてViewのヘルパーuser_omniauth_authorize_pathあたりが不適切な情報を取ってきているのだろうと推測するのですが、どこを直すべきかわかりません。
どなたかご教示頂けると幸いです。
  • Devise

    514 questions

    Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

  • OAuth

    175 questions

    OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

  • Ruby on Rails 4

    2637 questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る