【问题标题】:"Error validating client secret." 404 with Facebook Oauth and ruby“验证客户端密码时出错。” 404 与 Facebook Oauth 和 ruby
【发布时间】:2011-06-12 19:46:27
【问题描述】:

在用户允许 facebook auth 并使用令牌重定向到我的应用回调后,我正在尝试为带有 Warden 的应用实施 facebook 身份验证,我在使用 api 时得到 400。我的看守策略是这样的:

class Facebook < Warden::Strategies::Base
  def client
    @client ||= OAuth2::Client.new MyApp::Facebook::AppID, MyApp::Facebook::AppSecret, :site => 'https://graph.facebook.com'
  end

  def params
    @params ||= Rack::Utils.parse_query(request.query_string)
  end

  def authorize_url
    client.web_server.authorize_url :redirect_uri => request.url, :scope => 'email,publish_stream'
  end

  def authenticate!
    throw(:halt, [302, {'Location' => authorize_url}, []]) unless params['code']
    facebook = client.web_server.get_access_token params['code'], :redirect_uri => request.url
  rescue OAuth2::HTTPError => e
    puts e.response.body
  end
end

Strategies.add :facebook, Facebook

打印响应正文的结果是这样的:

{"error":{"type":"OAuthException","message":"Error validating client secret."}}

我很确定 app id 和 app secret 是 FB 提供的。

谢谢。

【问题讨论】:

    标签: ruby facebook oauth-2.0


    【解决方案1】:

    我已经多次看到该错误消息。以下是我要仔细检查的事项:

    • 您的域与您在 facebook 回调 url 中列出的域相同
    • app id 是正确的(实际上是在页面上打印出来,有时是 y
    • 应用密码正确

    【讨论】:

    • 对我来说,它使用了我的配置文件中的错误变量名:-/
    【解决方案2】:

    在创建 facebook 对象时添加 redirect_uri 来解决问题。

    将用户重定向到https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL 用户点击允许后,它会点击我们的重定向 Uri 此时我们将获取代码,我们需要对以下 Url 进行服务器端 HTTP Get 以将代码与我们的 oAuth 访问令牌交换:

    https://graph.facebook.com/oauth/access_token? client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&

     client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE
    

    现在在第 3 步,我不断收到 Http 400 响应。

    所以经过一些研究,我发现在我们在第 3 步提交的那个 redirect_uri 上除了验证请求之外什么也没做。因此,该值需要与步骤 2 匹配。

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 2015-09-14
      • 2016-08-14
      • 1970-01-01
      • 2018-05-19
      • 1970-01-01
      • 2021-11-10
      • 2011-08-23
      • 1970-01-01
      相关资源
      最近更新 更多