我对 OAuth2 相当陌生,我正在尝试通过带有 Omniauth 的 Google API 和 Google API 客户端访问用户的 Blogger 帐户。我正在使用以下内容:
- 导轨 3.2.3
- 红宝石 1.9.3
- oauth2 (0.8.0)
- 全域认证 (1.1.1)
- omniauth-google-oauth2 (0.1.13)
- 谷歌 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')
我一直在用头撞墙有一段时间了,有人有什么想法吗?