相关疑难解决方法(0)

Omniauth-facebook不断报告invalid_credentials

我正在尝试按照Railscast#360中的描述实现omniauth-facebook,并遇到了相当大的障碍.当我点击登录链接时,我得到了所需的弹出窗口,要求我输入我的facebook凭据,但是当我提交时,我得到一个OmniAuth :: Strategies :: OAuth2 :: CallbackError错误.在apache日志中,打印出来:(facebook)身份验证失败!invalid_credentials:OmniAuth :: Strategies :: OAuth2 :: CallbackError,OmniAuth :: Strategies :: OAuth2 :: CallbackError

这是相关代码:

omn​​iauth.rb

OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET']
end
Run Code Online (Sandbox Code Playgroud)

sessions_controller.rb

class SessionsController < ApplicationController
  def create
    user = User.from_omniauth(env["omniauth.auth"])
    session[:user_id] = user.id
    redirect_to root_url
  end

  def destroy
    session[:user_id] = nil
    redirect_to root_url
  end
end
Run Code Online (Sandbox Code Playgroud)

application.html.erb

<div id="fb-root"></div>
<script>        
window.fbAsyncInit = function() {
    FB.init({
        appId      : '(**my app id**)', // App ID
        status     : true, // check login …
Run Code Online (Sandbox Code Playgroud)

facebook ruby-on-rails omniauth

28
推荐指数
2
解决办法
2万
查看次数

OmniAuth Strategies Facebook NoAuthorizationCodeError(必须传递`code`参数或签名请求(通过`signed_request`参数):

我收到一个错误:

 OmniAuth::Strategies::Facebook::NoAuthorizationCodeError (must pass either a 
`code` parameter or a signed request (via `signed_request` parameter or a 
`fbsr_XXX` cookie)):
Run Code Online (Sandbox Code Playgroud)

它不是一直都会来的.它会偶尔出现,由airbrake通知.

谷歌搜索有很多链接,但无法找到合适的解决方案..任何人?omizersuth.rb在initializers目录下:

OmniAuth.config.logger = Rails.logger
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'], {:client_options => {:ssl => {:ca_path => "/etc/ssl/certs"}}, :scope => 'user_about_me,email,publish_actions,user_location,publish_stream,offline_access,user_interests,user_likes,user_hometown', :display => 'popup'}      

  OmniAuth.config.on_failure = Proc.new do |env|
    #this will invoke the omniauth_failure action in SessionsController.
    "SessionsController".constantize.action(:omniauth_failure).call(env)
  end         
end
Run Code Online (Sandbox Code Playgroud)

PS:我正在使用facebook javascript sdk和facebook-omniauth

facebook ruby-on-rails omniauth facebook-javascript-sdk

18
推荐指数
4
解决办法
1万
查看次数