omniauth OAuthException & OAuth::Unauthorized
Habe ich installiert omniauth 1.0. Auch ich habe oauth-0.4.5, oauth2-0.5.1, omniauth-facebook-1.0.0, omniauth-twitter-0.0.6.
omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :developer unless Rails.env.production?
provider :facebook, ENV['167257285348131'], ENV['c8c722f697scb2afcf1600286c6212a9'], :scope => 'email,offline_access,read_stream', :display => 'popup'
provider :twitter, ENV['fma2L22ObJCW52QrL7uew'], ENV['4aZfhCAOdiS7ap8pHJ7I1OZslFwVWWLiAMVpYUI']
end
session_controller.rb
class SessionsController < ApplicationController
require 'omniauth-facebook'
require 'omniauth-twitter'
require 'omniauth'
def create
@user = User.find_or_create_from_auth_hash(auth_hash)
self.current_user = @user
redirect_to '/'
end
def auth_hash
request.env['omniauth.auth']
end
end
Ich auch hinzufügen
'omniauth'
'omniauth-facebook'
'omniauth-twitter' Edelsteine gemfile
Gibt es zwei Probleme:
- Wenn ich http://localhost:3000/auth/facebook ich bekommen
{
"error": {
"message": "Missing parameter client_id.",
"type": "OAuthException"
}
}
Und den link graph.facebook.com/oauth/authorize?response_type=code&client_id=&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Ffacebook%2Fcallback&parse=query&scope=email%2Coffline_access%2Cread_stream&display=popup
Und es gibt keine client_id!!!
- Wenn ich http://localhost:3000/auth/twitter ich bekomme OAuth::Unerlaubte
401 Unauthorized
Irgendwelche Ideen?
- haben Sie gelöst, die facebook-Fehler? Wenn es so ist, kann ich das umgehen? Ich bekomme die gleiche Fehlermeldung. Es kann gelöst werden, wenn ich manuell Hinzugefügt die client_id zum query-string-Parameter
- ENV[] bricht. Versuchen Sie, verwenden Sie "" nur. BSP.: Anbieter :facebook, '167257285348131', 'c8c722f697scb2afcf1600286c6212a9'
- Vielen Dank, es funktioniert! Es scheint, dass ich auch müssen, starten Sie den webrick. 😀
- Ich hatte das exakt gleiche problem! Wissen Sie, warum ENV[] dies bricht? In meinem Fall hat es funktioniert mit facebook, aber nicht mit twitter.
- versuchen
source ~/.profile
(oder wo auch immer Sie definiert haben, die die env-Variablen), bevor Sie den server. Sie müssen dies nur einmal tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alex D. ist richtig, dass das ENV[] bricht. Erstellen omniauth.rb, so dass es verwendet verschiedene Schlüssel in verschiedenen Umgebungen einfach ausgedrückt:
in omniauth.rb
und dann in Ihrer Umgebung config-Dateien (config/environments/development.rb, etc.) setzen Sie den Schlüssel, den Sie verwenden möchten für, die Umwelt.
config/environments/development.rb:
config/environments/production.rb:
ENV['something']
sieht in Ihrer Umgebung vars für "etwas", so würde es erwarten
something='12345'
so sollten Sie es tun, wie, dass
check mit
und update deine config
wenn Sie heroku
Dort wurden aktuelle änderungen in omniauth 1.0 - https://github.com/intridea/omniauth
Ich würde versuchen, das zurücksetzen omniauth zu 0.3.2:
oder wenn Sie bundler, in Ihrem Gemfile: