我正在制作一个Ruby On Rails应用程序,我正在尝试使用Google Plus API的用户登录。要做到这一点,我使用Signet一个OAuth助手库。我正在看这个代码作为Signet与谷歌api的一个例子。
下面是我的代码:require "signet/oauth_2/client"
require "google/api_client"
oathClient = Signet::OAuth2::Client.new(
:authorization_uri => "https://accounts.google.com/o/oauth2/auth",
:token_credential_uri => "https://accounts.google.com/o/oauth2/token",
:client_id => Rails.application.secrets.gapi_client_id,
:client_secret => Rails.application.secrets.gapi_client_secret,
:redirect_uri => Rails.application.secrets.gapi_redirect_uri,
:scope => "https://www.googleapis.com/auth/plus.login")
gapi_client = Google::APIClient.new(
:application_name => "Branches",
:application_version => "0.0.1")
oathClient.code = request.body.read
oathClient.fetch_access_token!#Error on this line
gapi_client.authorization = oathClient
在倒数第二行出现错误:
oathClient.fetch_access_token!
错误:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
我做了一些调查,看起来这是由于缺乏证书信息造成的。然而,在处理Signet时,没有显示解决方案解决此问题。
操作系统:Windows 8 x64
RoR版本:4.1.1
图章版本:0.5.1
Google API客户端版本:0.6.2
看起来与https://github.com/googleapis/google-api-ruby-client/issues/235相关,其中解决方案为:
- 更新openssl
- 如果你使用自定义的
.pem
文件,设置为:export SSL_CERT_FILE=/path/to/custom/certificate/authority.pem