Sau khi cố gắng "đăng nhập với Google", tôi nhìn thấy lỗi này trong các bản ghi:Thất bại/Thất bại Omniauth: Cách gỡ lỗi?
Processing by Users::OmniauthCallbacksController#failure as HTML
tôi có thể xem tất cả các dữ liệu từ google được gửi thông qua URL (trong các bản ghi), bao gồm cả người sử dụng email và tên. Vì vậy, những gì có thể đi sai? Gọi lại của tôi thậm chí không được thực hiện. Tôi chỉ được chuyển hướng đến trang sign_in của trang web của tôi.
Và tôi khá chắc chắn mọi thứ được định cấu hình chính xác, vì điều này đã hoạt động tốt một vài tuần trước. Tôi không nghĩ rằng tôi đã thay đổi bất cứ điều gì. Đăng nhập Facebook vẫn hoạt động tốt.
Bất kỳ ý tưởng nào về cách gỡ lỗi sự cố này? Không có gì khác trong nhật ký, ngoài các URL dài có đầy đủ các tham số và giá trị. Chỉ tin nhắn INFO. Người được đăng ở trên là người duy nhất nói điều gì đó về thất bại.
CẬP NHẬT
Tôi đã thêm một phương pháp 'thất bại' với bộ điều khiển
def failure
render :text => params.inspect
end
nào dừng lại chuyển hướng, và in này:
{}
Url là thế này:
/users/auth/google/callback?_method=post&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=id_res&openid.op_endpoint=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fud&openid.response_nonce=2012-04-16T12%3A25%3A49Z_v1fNngSQJaHBQ&openid.return_to=http%3A%2F%2Fdev.myapp.me%3A3000%2Fusers%2Fauth%2Fgoogle%2Fcallback%3F_method%3Dpost&openid.assoc_handle=AMlYA9Urw_lYamPphTSdQ9a6DU0Ez0y5RaDDM78qPL7Xgm77nMpJiB85&openid.signed=op_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2Cassoc_handle%2Cns.ext1%2Cext1.mode%2Cext1.type.ext5%2Cext1.value.ext5%2Cext1.type.ext8%2Cext1.value.ext8%2Cext1.type.ext2%2Cext1.value.ext2&openid.sig=2FPjo7U1e%2Fde248XpUgjQLduNAM%3D&openid.identity=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DAItOawk1F5U6x_-kJnydjoww5haU41tquh1Zl2c&openid.claimed_id=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DAItOawk1F5U6x_-kJnydjoww5haU41tquh1Zl2c&openid.ns.ext1=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ext1.mode=fetch_response&openid.ext1.type.ext5=http%3A%2F%2Faxschema.org%2FnamePerson%2Ffirst&openid.ext1.value.ext5=Some_User&openid.ext1.type.ext8=http%3A%2F%2Faxschema.org%2Fcontact%2Femail&openid.ext1.value.ext8=some_email%40gmail.com&openid.ext1.type.ext2=http%3A%2F%2Faxschema.org%2FnamePerson%2Flast&openid.ext1.value.ext2=Some_User
Vì vậy, vấn đề là tất cả dữ liệu tôi cần là trong URL, nhưng đưa ra/omniauth không lấy nó (và rõ ràng đó là lý do tại sao nó gọi phương thức 'thất bại' thay vì gọi lại của tôi). Tôi không biết liệu nó có thể truy cập được thông qua mảng 'params' hay không.
Tôi cũng tò mò về phần ?_method=post
, bởi vì tất cả các yêu cầu đến trang web của tôi là yêu cầu GET. Có thể nó chỉ có nghĩa là yêu cầu do omniauth thực hiện với google là POST.
Mọi suy nghĩ?
Bạn cũng nên cho mọi người biết rằng họ sẽ cần phải cài đặt đá quý nâng lên để làm việc này https://github.com/pry/pry – Will