Ошибка SSL в Rails 3.2.3 при использовании клиента Google Oauth2 для доступа к API

Я новичок в OAuth2 и пытаюсь получить доступ к учетной записи Blogger пользователя через Google API с помощью Omniauth и клиента Google API. Я использую следующее:

  • Рельсы 3.2.3
  • Рубин 1.9.3
  • oauth2 (0.8.0)
  • всенаправленный (1.1.1)
  • omniauth-google-oauth2 (0.1.13)
  • Google-API-клиент (0.4.6)

Когда я впервые попытался аутентифицировать пользователя с учетными данными Google, я получил следующую ошибку:

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

Однако, когда я добавил конкретный путь к моим сертификатам CA в инициализаторе, ошибка исчезла:

provider :google_oauth2, ENV['GOOGLE_APP_ID'], ENV['GOOGLE_SECRET'], {
  access_type: "offline",
  approval_prompt: "",
  scope: 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/blogger',
  client_options: { ssl: { ca_file: cert_path } }
}

Итак, теперь мой пользователь может без проблем войти в систему со своими учетными данными Google. Проблема, которую я сейчас вижу, заключается в том, что когда я пытаюсь использовать токен доступа (полученный от Google во время аутентификации пользователя) для доступа к Blogger API, я снова получаю ошибку SSL. Это код, который я использую для доступа к API:

token = auth.first.oauth_token.access_token   # access token received during authentication

client = Google::APIClient.new
client.authorization.access_token = token
service = client.discovered_api('blogger', 'v3')
result = client.execute(
     :api_method => service.blog_list.list,
     :parameters => {},
     :headers => {'Content-Type' => 'application/json'})

Ошибка генерируется в строке service = client.discovered_api('blogger', 'v3')

Я уже какое-то время бьюсь головой о стену, у кого-нибудь есть идеи?


person cerrina    schedule 20.09.2012    source источник


Ответы (1)


Сделав перерыв, еще немного погуглил и снова трясли головой, я наткнулся на чудесно элегантное решение по адресу https://gist.github.com/867550. Установка переменной среды SSL_CERT_FILE и перезапуск моего компьютера устранили проблему. Ах да, я забыл упомянуть, что разрабатываю на машине Windows? Хорошие времена.

person cerrina    schedule 21.09.2012
comment
есть идеи о том, как это сделать на Linux-машине? - person Gaurav Saini; 19.06.2014