49d565d Aug 10, 2016
@dhermes @craigcitro @jonparrott
131 lines (93 sloc) 4.38 KB


making OAuth2 just a little less painful

oauth2client makes it easy to interact with OAuth2-protected resources, especially those related to Google APIs. You can also start with general information about using OAuth2 with Google APIs.

Getting started

We recommend installing via pip:

$ pip install --upgrade oauth2client

You can also install from source:

$ git clone
$ cd oauth2client
$ python install

Using pypy

  • In order to use crypto libraries (e.g. for service accounts) you will need to install one of pycrypto or pyOpenSSL.

  • Using pycrypto with pypy will be in general problematic. If libgmp is installed on your machine, the pycrypto install will attempt to build _fastmath.c. However, this file uses CPython implementation details and hence can't be built in pypy (as of pypy 2.6 and pycrypto 2.6.1). In order to install

    with_gmp=no pip install --upgrade pycrypto

    See discussions on the pypy issue tracker and the pycrypto issue tracker.

  • Using pyOpenSSL with versions of pypy before 2.6 may be in general problematic since pyOpenSSL depends on the cryptography library. For versions of cryptography before 1.0, importing pyOpenSSL with it caused massive startup costs. In order to address this slow startup, cryptography 1.0 made some changes in how it used cffi when means it can't be used on versions of pypy before 2.6.

    The default version of pypy you get when installed

    apt-get install pypy pypy-dev

    on Ubuntu 14.04 is 2.2.1. In order to upgrade, you'll need to use the pypy/ppa PPA:

    apt-get purge pypy pypy-dev
    add-apt-repository ppa:pypy/ppa
    apt-get update
    apt-get install pypy pypy-dev


Library Documentation


Please see the contributing page for more information. In particular, we love pull requests -- but please make sure to sign the contributor license agreement.

Supported Python Versions

We support Python 2.7 and 3.4+. (Whatever this file says, the truth is always represented by our tox.ini).

We explicitly decided to support Python 3 beginning with version 3.4. Reasons for this include:

  • Encouraging use of newest versions of Python 3
  • Following the lead of prominent open-source projects
  • Unicode literal support which allows for a cleaner codebase that works in both Python 2 and Python 3
  • Prominent projects like django have dropped support for earlier versions (3.3 support dropped in December 2015, and 2.6 support dropped in September 2014)