Я новичок в 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')
Я уже какое-то время бьюсь головой о стену, у кого-нибудь есть идеи?