2012-11-02 27 views
15

của URL dường như ngay (Cập nhật lần cuối họ ngày hôm qua):Bắt "Lỗi: redirect_uri_mismatch" với google_oauth2

enter image description here

Các tập tin quá:

omniauth.rb:

provider :google_oauth2, 'MY_CLIENT_ID.apps.googleusercontent.com', 'MY_CLIENT_SECRET', 
      :scope => 'https://mail.google.com/mail/feed/atom/' 

Error: redirect_uri_mismatch 
The redirect URI in the request: http://localhost:3000/auth/google_oauth2/callback did not match a registered redirect URI 

header.html.erb

<li><%= link_to "Sign in with Google", "auth/google_oauth2" %></li> 

routes.rb:

match '/auth/:provider/callback', to: 'sessions#omniauth_create' 

Nhưng tôi nhận được điều này:

> Error: redirect_uri_mismatch The redirect URI in the request: 
> http://localhost:3000/auth/google_oauth2/callback did not match a 
> registered redirect URI 

(Twitter và Facebook OmniAuth đang làm việc một cách hoàn hảo)

Không chắc gì là vấn đề. Bất kỳ usggestions để sửa lỗi này?

EDIT

Tôi đã thay đổi URI để http ...:

enter image description here

Nhưng vẫn nhận được lỗi tương tự.

Trả lời

21

Dường như yêu cầu được nhấn http://localhost:3000/auth/google_oauth2/callback, nhưng URI chuyển hướng được chỉ định của bạn khớp với mẫu tương tự là dành cho https. Thêm http://localhost:3000/auth/google_oauth2/callback vào danh sách các chuyển hướng của bạn có thể giải quyết được vấn đề đó.

CHỈNH SỬA: Sửa lỗi tiềm năng khác bao gồm một đường nhỏ / trong URI chuyển hướng tương ứng, dường như hoạt động trong trường hợp này.

+0

Cảm ơn. Tôi cũng nghĩ thế. Tôi đã thêm một omniath.rb chuyển hướng và cập nhật 'http: // localhost: 3000'. Nhưng vẫn nhận được lỗi tương tự (vui lòng xem ** EDIT ** của tôi). – alexchenco

+5

@alexchenco Ah, tôi hiểu rồi. Bạn đã thử thêm cả hai 'http' và' https' vào danh sách URI chưa? Tôi đồng ý rằng có vẻ như bạn đang làm mọi thứ đúng, nhưng tôi thường mặc định thêm một URI '' 'và' https' bất cứ khi nào OAuth tham gia. Ngoài ra, shot dài, nhưng bạn đã thử thêm dấu '/' vào các URI chưa? Vì vậy, có khả năng bốn URI (overkill, yes :)): 'http' và' https', mỗi cái bao gồm dấu gạch chéo ngược và không có dấu gạch chéo. – RocketDonkey

+0

Cảm ơn rất nhiều! Thêm để thêm dấu gạch chéo '/'. Rất lạ, ứng dụng Rails của tôi không có dấu "/', và ví dụ mà Google cung cấp cũng không bao gồm nó. – alexchenco

0

enter image description here

foo

vi config/initializers/omniauth.rb OmniAuth.config.full_host = 'https://localhost:3000' Rails.application.config.middleware.use OmniAuth::Builder do provider :google_oauth2, 'google_client_id', 'google_client_secret' end

0

Chia sẻ một giải pháp rất đơn giản copy-paste mà làm việc cho tôi.

tôi sao chép bất cứ điều gì tôi đã xác định trong mã của tôi như redirectUri ví dụ "redirect_uri": "http://127.0.0.1:3001/" và dán value của key này bên trong cài đặt Google rằng yêu cầu ủy quyền chuyển hướng URI. Bằng cách này, tôi đảm bảo rằng cả hai tham số đều giống nhau.

Nếu số url được tính, tôi sẽ console.log() và sao chép từ cửa sổ bảng điều khiển trước khi dán vào trong cài đặt google.

4

Có một vấn đề tương đối mới mẻ với phiên bản omniauth-oauth2 đá quý 1.4https://github.com/intridea/omniauth-oauth2/issues/81#issuecomment-151038559

tạm thời sửa chữa là hạ cấp đá quý mà rõ ràng trong Gemfile

gem 'omniauth-oauth2', '~> 1.3.1' 
+2

họ nói để tránh "cảm ơn" vì vậy tôi sẽ nói "yêu em" cho một giải pháp đơn giản như vậy: * – ImranNaqvi

+1

Vì vậy, nhiều giờ lưu nhờ câu trả lời của bạn ! – Shrolox

0

Tôi đã thử tất cả những điều trên nhưng không làm việc cho tôi . Cuối cùng nhận thấy trong thông báo lỗi của tôi gọi lại của tôi là hơi khác nhau. Tôi đã có một người dùng giữa localhost: 3000 và auth. Không thực sự chắc chắn tại sao.

http://localhost:3000/users/auth/google_oauth2/callback 

Đã thay đổi, đợi 30 phút và hoạt động.

Các vấn đề liên quan