Railscast 360に従って、Rails アプリ用に Omniauth-Facebook 認証をセットアップしました。認証はうまく機能しますが、追加のアクセス許可のスコープ要求を渡そうとして、私は夢中になっています。手動でスコープ リクエストを URL に入力できるので、それらが利用可能であることはわかっています。私はすべてを試し、すべてのグーグル検索を使い果たしました。
Railscast のコメントで示唆されているように、Omniauth-Facebook gem を 1.4.0 にダウングレードしました。これは、スコープを Omniauth イニシャライザからハッシュとして渡すことはできず、代わりに JavaScript を介して渡すことができることを意味します。どちらも私にはうまくいきませんが、Railscast に従ってコーヒースクリプトを実行しているコメントとは異なり、これでスコープのさまざまな配置を試みましたが、エラーまたは不完全な結果が得られます....つまり、電子メールのみ、user_events などはありません。
ここにコードがないことはわかっていますが、Railscast とまったく同じです。
同じRailscastをフォローしている人なら誰でも、1.4.1で問題を修正してイニシャライザからスコープハッシュを渡すことができるか、または1.4.0の実行時にそれを正しく渡す方法についてアドバイスを提供できますか?
よろしくお願いします!
更新:私はどこかにいるようなものです!しかし、それは正しくありません。任意のポインタは本当に高く評価されます.
私の Omniauth イニシャライザには次のものがあります。
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'app_id', 'secret_id', {:scope => 'user_birthday,user_events,email'}
end
(本物のIDが挿入されています!)
次に、cofescript 内の FB.Init にスコープという単語を配置することで、正しい要求を行っているように見えます。
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: 'app_id', cookie: true, scope)
$('#sign_in').click (e) ->
e.preventDefault()
FB.login (response) ->
window.location = "/auth/facebook/callback" if response.authResponse
$('#sign_out').click (e) ->
FB.getLoginStatus (response) ->
FB.logout() if response.authResponse
true
(ここでも実際の appid が上に挿入されています)
ただし、これによりポップアップが機能しなくなるため、スコープを間違って配置したと確信しています。私が見た他の例では FB.login に配置されていますが、そこに配置しようとするとエラーが発生するか、単に機能しません。
ヘルプ!:)