2

私は今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
4

2 に答える 2

0

私はいくつかのテストを行い、railscastに関するコメントを読みました。宝石をダウングレードする必要があります。

gem'omniauth-facebook'、 '1.4.0'

あなたがそれについてのより多くの情報を必要とするならば:

http://railscasts.com/episodes/360-facebook-authentication?view=comments#comment_159418

ここにコード:https ://github.com/senayar/facebook_connect

それが役に立てば幸い :)

于 2013-03-06T01:12:52.720 に答える
0

(私はここにいる間、コメントするのではなく、答える必要があります。)

あなたはいくつかのことを混同しているようです。指定:display => 'popup'してもポップアップ ウィンドウは表示されません。ログインフォームの表示モードを指定するFacebook関連のオプションです(ここで説明: https://developers.facebook.com/docs/reference/dialogs/oauth/ )

Turn omniauth facebook login into a popupで何が起こっているかを説明していますが、おそらく独自のポップアップ ウィンドウを維持したくないでしょう。Facebook の JavaScript SDK は FB.login 関数でこれを行います (ここで説明: https://developers.facebook.com/docs/reference/javascript/FB.login/ )

関連するすべてのコードが掲載されていないと、トラブルシューティングは困難です。あなたの書き込みからすると、JavaScript 側は正しく動作しているように見えます。好奇心から、あなたの omniauth.rb 初期化子はどのように見えるでしょうか?

于 2013-03-05T04:52:38.710 に答える