В настоящее время я создаю авторизацию OAuth, чтобы получать только электронную почту и информацию о профиле.
Я могу легко получить код, используя следующее:
def authorize
base = "https://accounts.google.com/o/oauth2/auth?"
params = {
:scope => "https://www.googleapis.com/auth/userinfo.profile",
:redirect_uri => "http://localhost:3000/oauth/callback/",
:client_id => "id",
:response_type => 'code'
}
redirect_to base + params.to_query
end
Однако, когда я пытаюсь получить токен доступа от Google, я получаю ошибку 404:
def callback
code = params[:code]
client_id = 'id'
client_secret = 'secret'
redirect_uri = "http://localhost:3000/oauth/callback/"
http = Net::HTTP.new('accounts.google.com', 80)
path = "https://accounts.google.com/o/oauth2/token?"
headers = {'Content-Type'=>"application/x-www-form-urlencoded" }
parameters = "code=#{code}&grant_type=authorization_code&client_secret=#{client_secret}&client_id=#{client_id}&redirect_uri=#{redirect_uri}"
resp, data = http.post(path,parameters,headers)
end
response code: 404 data: Google Home | Sign in
The page you requested is invalid.
Я не совсем уверен, в чем может быть проблема.Я пытался сопоставить с копировать + вставить зарегистрированный URL обратного вызова.Я несколько раз проверил свои параметры и не могу найти причину ошибки.
Я следую документации Google и зарегистрировался в Google со следующей информацией:
Client ID for web applications
Client ID: id
Client secret: secret
Redirect URIs: http://localhost:3000/oauth/callback/
JavaScript origins: none