GoogleコンタクトAPIはGoogleデータAPIでgoogle-api-python-client
あるため、ライブラリでは使用できませんが、検出ベースのAPIで使用することを目的としています。google-api-python-client
@NikolayFominyhで説明されているすべての問題を経験するのではなく、でOAuth2.0のネイティブサポートを使用できますgdata-python-client
。
有効なトークンを取得するには、Google Developersのブログ投稿の指示に従って、プロセスの詳細な説明を確認してください。
まず、トークンオブジェクトを作成します。
import gdata.gauth
CLIENT_ID = 'bogus.id' # Provided in the APIs console
CLIENT_SECRET = 'SeCr3Tv4lu3' # Provided in the APIs console
SCOPE = 'https://www.google.com/m8/feeds'
USER_AGENT = 'dummy-sample'
auth_token = gdata.gauth.OAuth2Token(
client_id=CLIENT_ID, client_secret=CLIENT_SECRET,
scope=SCOPE, user_agent=USER_AGENT)
次に、次のトークンを使用してアプリケーションを承認します。
APPLICATION_REDIRECT_URI = 'http://www.example.com/oauth2callback'
authorize_url = auth_token.generate_authorize_url(
redirect_uri=APPLICATION_REDIRECT_URI)
これを生成した後authorize_url
、あなた(またはアプリケーションのユーザー)はそれにアクセスしてOAuth2.0プロンプトを受け入れる必要があります。これがWebアプリケーション内にある場合は、単にリダイレクトできます。そうでない場合は、ブラウザーでリンクにアクセスする必要があります。
承認後、コードをトークンと交換します。
import atom.http_core
redirect_url = 'http://www.example.com/oauth2callback?code=SOME-RETURNED-VALUE'
url = atom.http_core.ParseUri(redirect_url)
auth_token.get_access_token(url.query)
ブラウザにアクセスした場合は、リダイレクト先のURLを変数にコピーする必要がありますredirect_url
。
Webアプリケーションを使用している場合は、パスのハンドラーを指定でき/oauth2callback
(たとえば)、クエリパラメーターcode
を取得してコードをトークンと交換するだけです。たとえば、次を使用する場合WebOb
:
redirect_url = atom.http_core.Uri.parse_uri(self.request.uri)
最後に、このトークンを使用してクライアントを承認します。
import gdata.contacts.service
client = gdata.contacts.service.ContactsService(source='appname')
auth_token.authorize(client)
更新(元の回答から12か月以上後):
または、ブログ投稿google-api-python-client
で説明しているように、サポートを使用することもできます。