3

私はOAuth2にかなり慣れていないので、OmniauthとGoogleAPIクライアントを使用してGoogleAPIを介してユーザーのBloggerアカウントにアクセスしようとしています。私は以下を使用しています:

  • Rails 3.2.3
  • Ruby 1.9.3
  • oauth2(0.8.0)
  • omn​​iauth(1.1.1)
  • omn​​iauth-google-oauth2(0.1.13)
  • google-api-client(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')

しばらく壁に頭をぶつけてきましたが、誰かアイデアはありますか?

4

1 に答える 1

2

休憩を取り、グーグルを増やし、頭を叩いた後、 https://gist.github.com/867550で素晴らしくエレガントなソリューションに出くわしました。SSL_CERT_FILE環境変数を設定し、マシンを再起動すると、問題が修正されました。そうそう、私はWindowsマシンで開発していると言うのを忘れましたか?良い時代。

于 2012-09-21T14:24:33.137 に答える