私はomniauth-facebook gem を使用して、レール アプリケーションで facebook の使用を承認しています。
これらの指示に従いましたが、直面している問題は、無効な資格情報に関するエラーです。
(facebook) Authentication failure! invalid_credentials: OAuth2::Error, :
{"error":{"message":"Error validating application. Invalid application ID.","type":"OAuthException","code":101}}
これについて奇妙なのは、Facebook API からこのエラーが発生したにもかかわらず、ユーザー情報を取得していることです。
request.env['omniauth.auth']
is(サーバーログ)の値。
#<OmniAuth::AuthHash credentials=#<OmniAuth::AuthHash expires=true
expires_at=1421256863 token="some_long_value"> extra=#<OmniAuth::AuthHash
raw_info=#<OmniAuth::AuthHash education=[#<OmniAuth::AuthHash school=
#<OmniAuth::AuthHash id="174179219354091" name="Udacity"> type="College">]
email="ashish@gmail.com" favorite_athletes=[#<OmniAuth::AuthHash id="51926382304"
name="Derrick Rose">, #<OmniAuth::AuthHash id="344128252278047" name="Sachin
Tendulkar">,.... so on
ルート.rb
devise_for :users, :controllers => {:omniauth_callbacks => "omniauth_callbacks"}
config/initializers/omniauth.rb
OmniAuth.config.logger = Rails.logger
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'key', 'secret', {:provider_ignores_state => true}
# key and secret are correctly added in above line
end
アプリ/モデル/user.rb
devise :omniauthable, :omniauth_providers => [:facebook]
アプリ/コントローラー/omniauth_callback_controller.rb
class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
omniauth = request.env['omniauth.auth']
# Other code to create authentication and other logic
puts "===>>> Omniauth is #{omniauth}"
end
def failure
res = request.env['omniauth.auth']
puts "======>>>>>> Authentication failed #{res}"
redirect_to root_path
end
end
応答がメソッドに送られるたびfailure
に、facebook メソッドには送られません。
私が理解していないのは、API から無効な資格情報エラーが発生した場合、なぜ Facebook からすべてのデータを取得するのかということです。Facebookからのコールバックを処理しているときに、自分の側で何か問題があるとは思えません。誰でも問題がどこにあるのか指摘できますか?
正しいアプリケーション ID とキーを使用していると確信しています。応答で Facebook からデータを取得しています。
誰でもこの問題で私を助けることができますか?