8

Google の Oauth を使用して Google アドセンスに接続しようとしていますが、このエラーが発生しています。それを修正する手がかりはありますか?

Pythonで以前にこのような問題に直面した人はいますか?

    Traceback (most recent call last):
    File "get_all_saved_reports.py", line 56, in <module>
      main(sys.argv)
    File "get_all_saved_reports.py", line 36, in main
        service = sample_utils.initialize_service()
    File "/home/nish/Programs/python/google-adsense/samples/adsense/sample_utils.py", line 114, in initialize_service
        credentials = prepare_credentials()
    File "/home/nish/Programs/python/google-adsense/samples/adsense/sample_utils.py", line 95, in prepare_credentials
        credentials = run(FLOW, storage)
      File "/usr/local/lib/python2.7/dist-packages/oauth2client-1.1-py2.7.egg/oauth2client/util.py", line 128, in positional_wrapper
        return wrapped(*args, **kwargs)
      File "/usr/local/lib/python2.7/dist-packages/oauth2client-1.1-py2.7.egg/oauth2client/tools.py", line 197, in run
        credential = flow.step2_exchange(code, http=http)
      File "/usr/local/lib/python2.7/dist-packages/oauth2client-1.1-py2.7.egg/oauth2client/util.py", line 128, in positional_wrapper
        return wrapped(*args, **kwargs)
      File "/usr/local/lib/python2.7/dist-packages/oauth2client-1.1-py2.7.egg/oauth2client/client.py", line 1283, in step2_exchange
        headers=headers)
      File "/usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.py", line 1571, in request
        (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
      File "/usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.py", line 1318, in _request
        (response, content) = self._conn_request(conn, request_uri, method, body, headers)
      File "/usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.py", line 1253, in _conn_request
        conn.connect()
      File "/usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.py", line 1022, in connect
        self.disable_ssl_certificate_validation, self.ca_certs)
      File "/usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.py", line 80, in _ssl_wrap_socket
    cert_reqs=cert_reqs, ca_certs=ca_certs)
  File "/usr/lib/python2.7/ssl.py", line 381, in wrap_socket
    ciphers=ciphers)
  File "/usr/lib/python2.7/ssl.py", line 141, in __init__
    ciphers)
ssl.SSLError: [Errno 185090050] _ssl.c:340: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib
4

4 に答える 4

30

Python 2.7.5でoauth2(GoogleではなくTwitter API用)でこの正確なx509エラーが発生し、Akshay Valsaのアドバイスを使用してcacerts.txtの権限を変更しました

chmod 644 /usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/cacerts.txt

これで問題が解決し、モジュールを sudo する代わりに通常のユーザーとして実行できるようになりました。ありがとう!

于 2013-10-02T20:13:47.950 に答える
7

この問題は、証明書ファイルのロード中に発生します。root ユーザーでプログラムを実行すると、この問題は解決されます。または、/usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/cacerts.txt ファイルのパーミッションを確認して、このファイルに必要なパーミッションを付与してください。

于 2013-09-26T12:51:14.610 に答える
1

私の場合、Django 開発サーバーを実行していました。仮想環境に切り替える前にサーバーを実行した場合、トレースバックで [Errno 185090050] _ssl.c:345: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib を見つけました。簡単に言えば、証明書を作成したバージョンの httplib2 を実行していませんでした。dist-package を実行していた可能性があります。(Ububtu 13.10)、Python 2.7、Django 1.62。これが他の人に役立つことを願っています。

于 2014-03-16T05:25:49.597 に答える
0

私は解決策を考え出しました。Google OAuth を理解するのは非常に難しく、初めてスクリプトを sudo/root として実行する必要がありました。それはうまくいきました。また、権限が正しく設定されていることを確認してください。

于 2013-04-29T18:07:07.080 に答える