私は今2日間これに苦労しています:
私はOmniauth-factbookをDeviseで正しく実装しています。ここで、facebook.comにアクセスする代わりに、ポップアップウィンドウでFacebook認証を実行することで改善したいと思います。RyanのRailsCastに従いdisplay => 'popup'
、プロバイダー構成に追加しました。omniauth.rb
Facebookにログインを正常にロードし、userIdに関する情報を含むハッシュrequest.authRequestが返されました。
ただし、コールバックパス(/ auth / facebook / callback)に戻ったとき、以前のようにrequest.evn [omniauth.auth]から:providerと:uidを取得できませんでした。
Facebook APIが認証ハッシュを返したのに、なぜomniauthハッシュが作成されなかったのですか?この問題を解決するにはどうすればよいですか?
Facebookのコールバックを処理する私のコントローラーは単純です:
class ServicesController < ApplicationController
def create
auth = request.env["omniauth.auth"]
debugger
デバッガーで、IRBを使用してチェックすると、request.envにomniauthハッシュがありません。
ところで、私は私のコーヒースクリプトファイルでクッキーをオンにしたと思います:
jQuery ->
$('body').prepend('<div id="fb-root"></div>')
$.ajax
url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js"
dataType: 'script'
cache: true
window.fbAsyncInit = ->
FB.init(appId: '<%= "myAppID" %>', cookie: true)
$('#facebook_signin').click (e) ->
e.preventDefault()
FB.login (response) ->
window.location = '/auth/facebook/callback' if response.authResponse
$('#facebook_signout').click (e) ->
FB.getLoginStatus (response) ->
FB.logout() if response.authResponse
true
ありがとうございました。
更新:私のomniauth.rbは次のようになります:
Rails.application.config.middleware.use OmniAuth::Builder do
# The following is for facebook
provider :linkedin, '3yn', 'iMJ'
provider :twitter, 'SQ', 'T5fo'
provider :facebook, '081', 'e80',
scope: "email"
end