在用户允许facebook身份验证并使用令牌重定向到我的应用程序回调后,我正在尝试使用warden为应用程序实现facebook身份验证。我的典狱长策略是:
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."}}我是相当舒尔的应用程序id和应用程序秘密是由FB提供的。
谢谢。
发布于 2012-07-19 00:33:51
这个错误消息我看过很多次了。以下是我要仔细检查的事情:
您的域名与您在facebook回调url
发布于 2019-08-22 17:49:53
在创建解决问题的facebook对象时添加redirect_uri。
在用户单击allow之后,将用户重定向到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匹配。
https://stackoverflow.com/questions/4753643
复制相似问题