Le vrai problème est que Faraday (qui Omniauth/Oauth utiliser pour leur HTTP appels) n'est pas n'était pas le réglage de la ca_path variable pour OpenSSL. Au moins sur Ubuntu, en plus de la racine de certificats sont stockés dans "/etc/ssl/certs". Depuis Faraday n'est pas n'est pas la définition de cette variable (et n'a pas actuellement de méthode pour le faire), OpenSSL n'est pas n'était pas de trouver le certificat racine pour Facebook du certificat SSL.
J'ai soumis une demande d'extraction de Faraday qui va ajouter le support pour cette variable et j'espère qu'ils vont tirer de ce changement bientôt. En attendant, vous pouvez monkeypatch faraday à ressembler à de la ce ou de l'utilisation de ma fourche de Faraday. Après cela, vous devez spécifier la version 0.3.0 de la OAuth2 gemme dans votre Gemspec qui supporte le passage de SSL options par le biais de Faraday. Tout ce que vous devez faire maintenant est de mise à niveau de Faraday 0.6.1, qui permet le passage de la ca_path variable et la mise à niveau vers OmniAuth 0.2.2, qui a les bonnes dépendances pour OAuth2. Vous serez alors en mesure de résoudre ce problème simplement en ajoutant ce qui suit à votre Omniauth initialiseur:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, FACEBOOK_KEY, FACEBOOK_SECRET, {:client_options => {:ssl => {:ca_path => "/etc/ssl/certs"}}}
end
Donc, pour récapituler:
-
Faraday doit être mis à jour pour prendre en charge SSL ca_path. Installer Faraday 0.6.1
-
Votre application doit utiliser OAuth2 la version 0.3.0. Vous devrez peut-être fourche omniauth puisqu'il dispose actuellement d'une version mineure de la dépendance dans la 0.2.x de l'arbre. La mise à niveau vers OmniAuth 0.2.2
- Modifier votre fournisseur d'initialiseur pour pointer vers votre système de certificat path ("/etc/ssl/certs" sur Ubuntu et al)
Espérons que les prochaines versions de deux de Faraday et Omniauth intégrera cette solution.
Grâce à KirylP ci-dessus pour le réglage de moi sur le droit chemin.