blob: d1126bff5862024f5f617a13ef585ddacbeaae72 [file] [log] [blame]
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -04001<?xml version="1.0" encoding="ascii"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "DTD/xhtml1-transitional.dtd">
4<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5<head>
6 <title>oauth2client.client</title>
7 <link rel="stylesheet" href="epydoc.css" type="text/css" />
8 <script type="text/javascript" src="epydoc.js"></script>
9</head>
10
11<body bgcolor="white" text="black" link="blue" vlink="#204080"
12 alink="#204080">
13<!-- ==================== NAVIGATION BAR ==================== -->
14<table class="navbar" border="0" width="100%" cellpadding="0"
15 bgcolor="#a0c0ff" cellspacing="0">
16 <tr valign="middle">
17
18 <!-- Tree link -->
19 <th>&nbsp;&nbsp;&nbsp;<a
20 href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
21
22 <!-- Index link -->
23 <th>&nbsp;&nbsp;&nbsp;<a
24 href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
25
26 <!-- Help link -->
27 <th>&nbsp;&nbsp;&nbsp;<a
28 href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
29
30 <th class="navbar" width="100%"></th>
31 </tr>
32</table>
33<table width="100%" cellpadding="0" cellspacing="0">
34 <tr valign="top">
35 <td width="100%">
36 <span class="breadcrumbs">
37 <a href="oauth2client-module.html">Package&nbsp;oauth2client</a> ::
38 Module&nbsp;client
39 </span>
40 </td>
41 <td>
42 <table cellpadding="0" cellspacing="0">
43 <!-- hide/show private -->
44 <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
45 onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
46 <tr><td align="right"><span class="options"
47 >[<a href="frames.html" target="_top">frames</a
48 >]&nbsp;|&nbsp;<a href="oauth2client.client-module.html"
49 target="_top">no&nbsp;frames</a>]</span></td></tr>
50 </table>
51 </td>
52 </tr>
53</table>
54<!-- ==================== MODULE DESCRIPTION ==================== -->
55<h1 class="epydoc">Module client</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html">source&nbsp;code</a></span></p>
56<pre class="literalblock">
57An OAuth 2.0 client.
58
59Tools for interacting with OAuth 2.0 protected resources.
60
61</pre>
62
63<hr />
64<div class="fields"> <p><strong>Author:</strong>
65 jcgregorio@google.com (Joe Gregorio)
66 </p>
67</div><!-- ==================== CLASSES ==================== -->
68<a name="section-Classes"></a>
69<table class="summary" border="1" cellpadding="3"
70 cellspacing="0" width="100%" bgcolor="white">
71<tr bgcolor="#70b0f0" class="table-header">
72 <td colspan="2" class="table-header">
73 <table border="0" cellpadding="0" cellspacing="0" width="100%">
74 <tr valign="top">
75 <td align="left"><span class="table-header">Classes</span></td>
76 <td align="right" valign="top"
77 ><span class="options">[<a href="#section-Classes"
78 class="privatelink" onclick="toggle_private();"
79 >hide private</a>]</span></td>
80 </tr>
81 </table>
82 </td>
83</tr>
84<tr>
85 <td width="15%" align="right" valign="top" class="summary">
86 <span class="summary-type">&nbsp;</span>
87 </td><td class="summary">
88 <a href="oauth2client.client.Error-class.html" class="summary-name">Error</a><br />
89 Base error for this module.
90 </td>
91 </tr>
92<tr>
93 <td width="15%" align="right" valign="top" class="summary">
94 <span class="summary-type">&nbsp;</span>
95 </td><td class="summary">
96 <a href="oauth2client.client.FlowExchangeError-class.html" class="summary-name">FlowExchangeError</a><br />
97 Error trying to exchange an authorization grant for an access token.
98 </td>
99 </tr>
100<tr>
101 <td width="15%" align="right" valign="top" class="summary">
102 <span class="summary-type">&nbsp;</span>
103 </td><td class="summary">
104 <a href="oauth2client.client.AccessTokenRefreshError-class.html" class="summary-name">AccessTokenRefreshError</a><br />
105 Error trying to refresh an expired access token.
106 </td>
107 </tr>
108<tr>
109 <td width="15%" align="right" valign="top" class="summary">
110 <span class="summary-type">&nbsp;</span>
111 </td><td class="summary">
112 <a href="oauth2client.client.UnknownClientSecretsFlowError-class.html" class="summary-name">UnknownClientSecretsFlowError</a><br />
113 The client secrets file called for an unknown type of OAuth 2.0 flow.
114 </td>
115 </tr>
116<tr>
117 <td width="15%" align="right" valign="top" class="summary">
118 <span class="summary-type">&nbsp;</span>
119 </td><td class="summary">
120 <a href="oauth2client.client.AccessTokenCredentialsError-class.html" class="summary-name">AccessTokenCredentialsError</a><br />
121 Having only the access_token means no refresh is possible.
122 </td>
123 </tr>
124<tr>
125 <td width="15%" align="right" valign="top" class="summary">
126 <span class="summary-type">&nbsp;</span>
127 </td><td class="summary">
128 <a href="oauth2client.client.VerifyJwtTokenError-class.html" class="summary-name">VerifyJwtTokenError</a><br />
129 Could on retrieve certificates for validation.
130 </td>
131 </tr>
132<tr>
133 <td width="15%" align="right" valign="top" class="summary">
134 <span class="summary-type">&nbsp;</span>
135 </td><td class="summary">
Joe Gregorio52a5c532013-01-24 16:19:07 -0500136 <a href="oauth2client.client.NonAsciiHeaderError-class.html" class="summary-name">NonAsciiHeaderError</a><br />
137 Header names and values must be ASCII strings.
138 </td>
139 </tr>
140<tr>
141 <td width="15%" align="right" valign="top" class="summary">
142 <span class="summary-type">&nbsp;</span>
143 </td><td class="summary">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400144 <a href="oauth2client.client.MemoryCache-class.html" class="summary-name">MemoryCache</a><br />
145 httplib2 Cache implementation which only caches locally.
146 </td>
147 </tr>
148<tr>
149 <td width="15%" align="right" valign="top" class="summary">
150 <span class="summary-type">&nbsp;</span>
151 </td><td class="summary">
152 <a href="oauth2client.client.Credentials-class.html" class="summary-name">Credentials</a><br />
153 Base class for all Credentials objects.
154 </td>
155 </tr>
156<tr>
157 <td width="15%" align="right" valign="top" class="summary">
158 <span class="summary-type">&nbsp;</span>
159 </td><td class="summary">
160 <a href="oauth2client.client.Flow-class.html" class="summary-name">Flow</a><br />
161 Base class for all Flow objects.
162 </td>
163 </tr>
164<tr>
165 <td width="15%" align="right" valign="top" class="summary">
166 <span class="summary-type">&nbsp;</span>
167 </td><td class="summary">
168 <a href="oauth2client.client.Storage-class.html" class="summary-name">Storage</a><br />
169 Base class for all Storage objects.
170 </td>
171 </tr>
172<tr>
173 <td width="15%" align="right" valign="top" class="summary">
174 <span class="summary-type">&nbsp;</span>
175 </td><td class="summary">
176 <a href="oauth2client.client.OAuth2Credentials-class.html" class="summary-name">OAuth2Credentials</a><br />
177 Credentials object for OAuth 2.0.
178 </td>
179 </tr>
180<tr>
181 <td width="15%" align="right" valign="top" class="summary">
182 <span class="summary-type">&nbsp;</span>
183 </td><td class="summary">
184 <a href="oauth2client.client.AccessTokenCredentials-class.html" class="summary-name">AccessTokenCredentials</a><br />
185 Credentials object for OAuth 2.0.
186 </td>
187 </tr>
188<tr>
189 <td width="15%" align="right" valign="top" class="summary">
190 <span class="summary-type">&nbsp;</span>
191 </td><td class="summary">
192 <a href="oauth2client.client.AssertionCredentials-class.html" class="summary-name">AssertionCredentials</a><br />
193 Abstract Credentials object used for OAuth 2.0 assertion grants.
194 </td>
195 </tr>
196<tr>
197 <td width="15%" align="right" valign="top" class="summary">
198 <span class="summary-type">&nbsp;</span>
199 </td><td class="summary">
200 <a href="oauth2client.client.SignedJwtAssertionCredentials-class.html" class="summary-name">SignedJwtAssertionCredentials</a><br />
201 Credentials object used for OAuth 2.0 Signed JWT assertion grants.
202 </td>
203 </tr>
204<tr>
205 <td width="15%" align="right" valign="top" class="summary">
206 <span class="summary-type">&nbsp;</span>
207 </td><td class="summary">
208 <a href="oauth2client.client.OAuth2WebServerFlow-class.html" class="summary-name">OAuth2WebServerFlow</a><br />
209 Does the Web Server Flow for OAuth 2.0.
210 </td>
211 </tr>
212</table>
213<!-- ==================== FUNCTIONS ==================== -->
214<a name="section-Functions"></a>
215<table class="summary" border="1" cellpadding="3"
216 cellspacing="0" width="100%" bgcolor="white">
217<tr bgcolor="#70b0f0" class="table-header">
218 <td colspan="2" class="table-header">
219 <table border="0" cellpadding="0" cellspacing="0" width="100%">
220 <tr valign="top">
221 <td align="left"><span class="table-header">Functions</span></td>
222 <td align="right" valign="top"
223 ><span class="options">[<a href="#section-Functions"
224 class="privatelink" onclick="toggle_private();"
225 >hide private</a>]</span></td>
226 </tr>
227 </table>
228 </td>
229</tr>
230<tr class="private">
231 <td width="15%" align="right" valign="top" class="summary">
232 <span class="summary-type">&nbsp;</span>
233 </td><td class="summary">
234 <table width="100%" cellpadding="0" cellspacing="0" border="0">
235 <tr>
236 <td><span class="summary-sig"><a name="_abstract"></a><span class="summary-sig-name">_abstract</span>()</span></td>
237 <td align="right" valign="top">
238 <span class="codelink"><a href="oauth2client.client-pysrc.html#_abstract">source&nbsp;code</a></span>
239
240 </td>
241 </tr>
242 </table>
243
244 </td>
245 </tr>
Joe Gregoriof4839b02012-09-06 13:47:24 -0400246<tr>
247 <td width="15%" align="right" valign="top" class="summary">
248 <span class="summary-type">&nbsp;</span>
249 </td><td class="summary">
250 <table width="100%" cellpadding="0" cellspacing="0" border="0">
251 <tr>
Joe Gregorio52a5c532013-01-24 16:19:07 -0500252 <td><span class="summary-sig"><a href="oauth2client.client-module.html#clean_headers" class="summary-sig-name">clean_headers</a>(<span class="summary-sig-arg">headers</span>)</span><br />
253 Forces header keys and values to be strings, i.e not unicode.</td>
254 <td align="right" valign="top">
255 <span class="codelink"><a href="oauth2client.client-pysrc.html#clean_headers">source&nbsp;code</a></span>
256
257 </td>
258 </tr>
259 </table>
260
261 </td>
262 </tr>
263<tr>
264 <td width="15%" align="right" valign="top" class="summary">
265 <span class="summary-type">&nbsp;</span>
266 </td><td class="summary">
267 <table width="100%" cellpadding="0" cellspacing="0" border="0">
268 <tr>
Joe Gregoriof4839b02012-09-06 13:47:24 -0400269 <td><span class="summary-sig"><a href="oauth2client.client-module.html#verify_id_token" class="summary-sig-name">verify_id_token</a>(<span class="summary-sig-arg">id_token</span>,
270 <span class="summary-sig-arg">audience</span>,
271 <span class="summary-sig-arg">http</span>=<span class="summary-sig-default">None</span>,
272 <span class="summary-sig-arg">cert_uri</span>=<span class="summary-sig-default">ID_TOKEN_VERIFICATON_CERTS</span>)</span><br />
273 Verifies a signed JWT id_token.</td>
274 <td align="right" valign="top">
275 <span class="codelink"><a href="oauth2client.client-pysrc.html#verify_id_token">source&nbsp;code</a></span>
276
277 </td>
278 </tr>
279 </table>
280
281 </td>
282 </tr>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400283<tr class="private">
284 <td width="15%" align="right" valign="top" class="summary">
285 <span class="summary-type">&nbsp;</span>
286 </td><td class="summary">
287 <table width="100%" cellpadding="0" cellspacing="0" border="0">
288 <tr>
289 <td><span class="summary-sig"><a name="_urlsafe_b64decode"></a><span class="summary-sig-name">_urlsafe_b64decode</span>(<span class="summary-sig-arg">b64string</span>)</span></td>
290 <td align="right" valign="top">
291 <span class="codelink"><a href="oauth2client.client-pysrc.html#_urlsafe_b64decode">source&nbsp;code</a></span>
292
293 </td>
294 </tr>
295 </table>
296
297 </td>
298 </tr>
299<tr class="private">
300 <td width="15%" align="right" valign="top" class="summary">
301 <span class="summary-type">&nbsp;</span>
302 </td><td class="summary">
303 <table width="100%" cellpadding="0" cellspacing="0" border="0">
304 <tr>
305 <td><span class="summary-sig"><a href="oauth2client.client-module.html#_extract_id_token" class="summary-sig-name" onclick="show_private();">_extract_id_token</a>(<span class="summary-sig-arg">id_token</span>)</span><br />
306 Extract the JSON payload from a JWT.</td>
307 <td align="right" valign="top">
308 <span class="codelink"><a href="oauth2client.client-pysrc.html#_extract_id_token">source&nbsp;code</a></span>
309
310 </td>
311 </tr>
312 </table>
313
314 </td>
315 </tr>
Joe Gregorioe7a0c472012-07-12 11:46:04 -0400316<tr class="private">
317 <td width="15%" align="right" valign="top" class="summary">
318 <span class="summary-type">&nbsp;</span>
319 </td><td class="summary">
320 <table width="100%" cellpadding="0" cellspacing="0" border="0">
321 <tr>
322 <td><span class="summary-sig"><a href="oauth2client.client-module.html#_parse_exchange_token_response" class="summary-sig-name" onclick="show_private();">_parse_exchange_token_response</a>(<span class="summary-sig-arg">content</span>)</span><br />
323 Parses response of an exchange token request.</td>
324 <td align="right" valign="top">
325 <span class="codelink"><a href="oauth2client.client-pysrc.html#_parse_exchange_token_response">source&nbsp;code</a></span>
326
327 </td>
328 </tr>
329 </table>
330
331 </td>
332 </tr>
Joe Gregoriof4839b02012-09-06 13:47:24 -0400333<tr>
334 <td width="15%" align="right" valign="top" class="summary">
335 <span class="summary-type">&nbsp;</span>
336 </td><td class="summary">
337 <table width="100%" cellpadding="0" cellspacing="0" border="0">
338 <tr>
339 <td><span class="summary-sig"><a href="oauth2client.client-module.html#credentials_from_code" class="summary-sig-name">credentials_from_code</a>(<span class="summary-sig-arg">client_id</span>,
340 <span class="summary-sig-arg">client_secret</span>,
341 <span class="summary-sig-arg">scope</span>,
342 <span class="summary-sig-arg">code</span>,
343 <span class="summary-sig-arg">redirect_uri</span>=<span class="summary-sig-default">'postmessage'</span>,
344 <span class="summary-sig-arg">http</span>=<span class="summary-sig-default">None</span>,
345 <span class="summary-sig-arg">user_agent</span>=<span class="summary-sig-default">None</span>,
346 <span class="summary-sig-arg">token_uri</span>=<span class="summary-sig-default">'https://accounts.google.com/o/oauth2/token'</span>)</span><br />
347 Exchanges an authorization code for an OAuth2Credentials object.</td>
348 <td align="right" valign="top">
349 <span class="codelink"><a href="oauth2client.client-pysrc.html#credentials_from_code">source&nbsp;code</a></span>
350
351 </td>
352 </tr>
353 </table>
354
355 </td>
356 </tr>
357<tr>
358 <td width="15%" align="right" valign="top" class="summary">
359 <span class="summary-type">&nbsp;</span>
360 </td><td class="summary">
361 <table width="100%" cellpadding="0" cellspacing="0" border="0">
362 <tr>
363 <td><span class="summary-sig"><a href="oauth2client.client-module.html#credentials_from_clientsecrets_and_code" class="summary-sig-name">credentials_from_clientsecrets_and_code</a>(<span class="summary-sig-arg">filename</span>,
364 <span class="summary-sig-arg">scope</span>,
365 <span class="summary-sig-arg">code</span>,
366 <span class="summary-sig-arg">message</span>=<span class="summary-sig-default">None</span>,
367 <span class="summary-sig-arg">redirect_uri</span>=<span class="summary-sig-default">'postmessage'</span>,
368 <span class="summary-sig-arg">http</span>=<span class="summary-sig-default">None</span>,
369 <span class="summary-sig-arg">cache</span>=<span class="summary-sig-default">None</span>)</span><br />
370 Returns OAuth2Credentials from a clientsecrets file and an auth code.</td>
371 <td align="right" valign="top">
372 <span class="codelink"><a href="oauth2client.client-pysrc.html#credentials_from_clientsecrets_and_code">source&nbsp;code</a></span>
373
374 </td>
375 </tr>
376 </table>
377
378 </td>
379 </tr>
380<tr>
381 <td width="15%" align="right" valign="top" class="summary">
382 <span class="summary-type">&nbsp;</span>
383 </td><td class="summary">
384 <table width="100%" cellpadding="0" cellspacing="0" border="0">
385 <tr>
386 <td><span class="summary-sig"><a href="oauth2client.client-module.html#flow_from_clientsecrets" class="summary-sig-name">flow_from_clientsecrets</a>(<span class="summary-sig-arg">filename</span>,
387 <span class="summary-sig-arg">scope</span>,
388 <span class="summary-sig-arg">redirect_uri</span>=<span class="summary-sig-default">None</span>,
389 <span class="summary-sig-arg">message</span>=<span class="summary-sig-default">None</span>,
390 <span class="summary-sig-arg">cache</span>=<span class="summary-sig-default">None</span>)</span><br />
391 Create a Flow from a clientsecrets file.</td>
392 <td align="right" valign="top">
393 <span class="codelink"><a href="oauth2client.client-pysrc.html#flow_from_clientsecrets">source&nbsp;code</a></span>
394
395 </td>
396 </tr>
397 </table>
398
399 </td>
400 </tr>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400401</table>
402<!-- ==================== VARIABLES ==================== -->
403<a name="section-Variables"></a>
404<table class="summary" border="1" cellpadding="3"
405 cellspacing="0" width="100%" bgcolor="white">
406<tr bgcolor="#70b0f0" class="table-header">
407 <td colspan="2" class="table-header">
408 <table border="0" cellpadding="0" cellspacing="0" width="100%">
409 <tr valign="top">
410 <td align="left"><span class="table-header">Variables</span></td>
411 <td align="right" valign="top"
412 ><span class="options">[<a href="#section-Variables"
413 class="privatelink" onclick="toggle_private();"
414 >hide private</a>]</span></td>
415 </tr>
416 </table>
417 </td>
418</tr>
419<tr>
420 <td width="15%" align="right" valign="top" class="summary">
421 <span class="summary-type">&nbsp;</span>
422 </td><td class="summary">
Joe Gregorio52a5c532013-01-24 16:19:07 -0500423 <a name="HAS_CRYPTO"></a><span class="summary-name">HAS_CRYPTO</span> = <code title="True">True</code>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400424 </td>
425 </tr>
426<tr>
427 <td width="15%" align="right" valign="top" class="summary">
428 <span class="summary-type">&nbsp;</span>
429 </td><td class="summary">
430 <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code>
431 </td>
432 </tr>
433<tr>
434 <td width="15%" align="right" valign="top" class="summary">
435 <span class="summary-type">&nbsp;</span>
436 </td><td class="summary">
Joe Gregoriof4839b02012-09-06 13:47:24 -0400437 <a name="EXPIRY_FORMAT"></a><span class="summary-name">EXPIRY_FORMAT</span> = <code title="'%Y-%m-%dT%H:%M:%SZ'">'%Y-%m-%dT%H:%M:%SZ'</code>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400438 </td>
439 </tr>
440<tr>
441 <td width="15%" align="right" valign="top" class="summary">
442 <span class="summary-type">&nbsp;</span>
443 </td><td class="summary">
Joe Gregoriof4839b02012-09-06 13:47:24 -0400444 <a href="oauth2client.client-module.html#ID_TOKEN_VERIFICATON_CERTS" class="summary-name">ID_TOKEN_VERIFICATON_CERTS</a> = <code title="'https://www.googleapis.com/oauth2/v1/certs'">'https://www.googleapis.com/oauth<code class="variable-ellipsis">...</code></code>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400445 </td>
446 </tr>
447<tr>
448 <td width="15%" align="right" valign="top" class="summary">
449 <span class="summary-type">&nbsp;</span>
450 </td><td class="summary">
Joe Gregoriof4839b02012-09-06 13:47:24 -0400451 <a name="OOB_CALLBACK_URN"></a><span class="summary-name">OOB_CALLBACK_URN</span> = <code title="'urn:ietf:wg:oauth:2.0:oob'">'urn:ietf:wg:oauth:2.0:oob'</code>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400452 </td>
453 </tr>
Joe Gregorio52a5c532013-01-24 16:19:07 -0500454<tr>
455 <td width="15%" align="right" valign="top" class="summary">
456 <span class="summary-type">&nbsp;</span>
457 </td><td class="summary">
458 <a name="REFRESH_STATUS_CODES"></a><span class="summary-name">REFRESH_STATUS_CODES</span> = <code title="[401]">[401]</code>
459 </td>
460 </tr>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400461<tr class="private">
462 <td width="15%" align="right" valign="top" class="summary">
463 <span class="summary-type">&nbsp;</span>
464 </td><td class="summary">
465 <a name="_cached_http"></a><span class="summary-name">_cached_http</span> = <code title="httplib2.Http(MemoryCache())">httplib2.Http(MemoryCache())</code>
466 </td>
467 </tr>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400468</table>
469<!-- ==================== FUNCTION DETAILS ==================== -->
470<a name="section-FunctionDetails"></a>
471<table class="details" border="1" cellpadding="3"
472 cellspacing="0" width="100%" bgcolor="white">
473<tr bgcolor="#70b0f0" class="table-header">
474 <td colspan="2" class="table-header">
475 <table border="0" cellpadding="0" cellspacing="0" width="100%">
476 <tr valign="top">
477 <td align="left"><span class="table-header">Function Details</span></td>
478 <td align="right" valign="top"
479 ><span class="options">[<a href="#section-FunctionDetails"
480 class="privatelink" onclick="toggle_private();"
481 >hide private</a>]</span></td>
482 </tr>
483 </table>
484 </td>
485</tr>
486</table>
Joe Gregorio52a5c532013-01-24 16:19:07 -0500487<a name="clean_headers"></a>
488<div>
489<table class="details" border="1" cellpadding="3"
490 cellspacing="0" width="100%" bgcolor="white">
491<tr><td>
492 <table width="100%" cellpadding="0" cellspacing="0" border="0">
493 <tr valign="top"><td>
494 <h3 class="epydoc"><span class="sig"><span class="sig-name">clean_headers</span>(<span class="sig-arg">headers</span>)</span>
495 </h3>
496 </td><td align="right" valign="top"
497 ><span class="codelink"><a href="oauth2client.client-pysrc.html#clean_headers">source&nbsp;code</a></span>&nbsp;
498 </td>
499 </tr></table>
500
501 <pre class="literalblock">
502Forces header keys and values to be strings, i.e not unicode.
503
504The httplib module just concats the header keys and values in a way that may
505make the message header a unicode string, which, if it then tries to
506contatenate to a binary request body may result in a unicode decode error.
507
508Args:
509 headers: dict, A dictionary of headers.
510
511Returns:
512 The same dictionary but with all the keys converted to strings.
513
514</pre>
515 <dl class="fields">
516 </dl>
517</td></tr></table>
518</div>
Joe Gregoriof4839b02012-09-06 13:47:24 -0400519<a name="verify_id_token"></a>
520<div>
521<table class="details" border="1" cellpadding="3"
522 cellspacing="0" width="100%" bgcolor="white">
523<tr><td>
524 <table width="100%" cellpadding="0" cellspacing="0" border="0">
525 <tr valign="top"><td>
526 <h3 class="epydoc"><span class="sig"><span class="sig-name">verify_id_token</span>(<span class="sig-arg">id_token</span>,
527 <span class="sig-arg">audience</span>,
528 <span class="sig-arg">http</span>=<span class="sig-default">None</span>,
529 <span class="sig-arg">cert_uri</span>=<span class="sig-default">ID_TOKEN_VERIFICATON_CERTS</span>)</span>
530 </h3>
531 </td><td align="right" valign="top"
532 ><span class="codelink"><a href="oauth2client.client-pysrc.html#verify_id_token">source&nbsp;code</a></span>&nbsp;
533 </td>
534 </tr></table>
535
536 <pre class="literalblock">
537Verifies a signed JWT id_token.
538
539This function requires PyOpenSSL and because of that it does not work on
Joe Gregorio52a5c532013-01-24 16:19:07 -0500540App Engine.
Joe Gregoriof4839b02012-09-06 13:47:24 -0400541
542Args:
543 id_token: string, A Signed JWT.
544 audience: string, The audience 'aud' that the token should be for.
545 http: httplib2.Http, instance to use to make the HTTP request. Callers
546 should supply an instance that has caching enabled.
547 cert_uri: string, URI of the certificates in JSON format to
548 verify the JWT against.
549
550Returns:
551 The deserialized JSON in the JWT.
552
553Raises:
554 oauth2client.crypt.AppIdentityError if the JWT fails to verify.
555
556</pre>
557 <dl class="fields">
558 <dt>Decorators:</dt>
559 <dd><ul class="nomargin-top">
560 <li><code>@util.positional(2)</code></li>
561 </ul></dd>
562 </dl>
563</td></tr></table>
564</div>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400565<a name="_extract_id_token"></a>
566<div class="private">
567<table class="details" border="1" cellpadding="3"
568 cellspacing="0" width="100%" bgcolor="white">
569<tr><td>
570 <table width="100%" cellpadding="0" cellspacing="0" border="0">
571 <tr valign="top"><td>
572 <h3 class="epydoc"><span class="sig"><span class="sig-name">_extract_id_token</span>(<span class="sig-arg">id_token</span>)</span>
573 </h3>
574 </td><td align="right" valign="top"
575 ><span class="codelink"><a href="oauth2client.client-pysrc.html#_extract_id_token">source&nbsp;code</a></span>&nbsp;
576 </td>
577 </tr></table>
578
579 <pre class="literalblock">
580Extract the JSON payload from a JWT.
581
582Does the extraction w/o checking the signature.
583
584Args:
585 id_token: string, OAuth 2.0 id_token.
586
587Returns:
588 object, The deserialized JSON payload.
589
590</pre>
591 <dl class="fields">
592 </dl>
593</td></tr></table>
594</div>
Joe Gregorioe7a0c472012-07-12 11:46:04 -0400595<a name="_parse_exchange_token_response"></a>
596<div class="private">
597<table class="details" border="1" cellpadding="3"
598 cellspacing="0" width="100%" bgcolor="white">
599<tr><td>
600 <table width="100%" cellpadding="0" cellspacing="0" border="0">
601 <tr valign="top"><td>
602 <h3 class="epydoc"><span class="sig"><span class="sig-name">_parse_exchange_token_response</span>(<span class="sig-arg">content</span>)</span>
603 </h3>
604 </td><td align="right" valign="top"
605 ><span class="codelink"><a href="oauth2client.client-pysrc.html#_parse_exchange_token_response">source&nbsp;code</a></span>&nbsp;
606 </td>
607 </tr></table>
608
609 <pre class="literalblock">
610Parses response of an exchange token request.
611
612Most providers return JSON but some (e.g. Facebook) return a
613url-encoded string.
614
615Args:
616 content: The body of a response
617
618Returns:
619 Content as a dictionary object. Note that the dict could be empty,
620 i.e. {}. That basically indicates a failure.
621
622</pre>
623 <dl class="fields">
624 </dl>
625</td></tr></table>
626</div>
Joe Gregoriof4839b02012-09-06 13:47:24 -0400627<a name="credentials_from_code"></a>
628<div>
629<table class="details" border="1" cellpadding="3"
630 cellspacing="0" width="100%" bgcolor="white">
631<tr><td>
632 <table width="100%" cellpadding="0" cellspacing="0" border="0">
633 <tr valign="top"><td>
634 <h3 class="epydoc"><span class="sig"><span class="sig-name">credentials_from_code</span>(<span class="sig-arg">client_id</span>,
635 <span class="sig-arg">client_secret</span>,
636 <span class="sig-arg">scope</span>,
637 <span class="sig-arg">code</span>,
638 <span class="sig-arg">redirect_uri</span>=<span class="sig-default">'postmessage'</span>,
639 <span class="sig-arg">http</span>=<span class="sig-default">None</span>,
640 <span class="sig-arg">user_agent</span>=<span class="sig-default">None</span>,
641 <span class="sig-arg">token_uri</span>=<span class="sig-default">'https://accounts.google.com/o/oauth2/token'</span>)</span>
642 </h3>
643 </td><td align="right" valign="top"
644 ><span class="codelink"><a href="oauth2client.client-pysrc.html#credentials_from_code">source&nbsp;code</a></span>&nbsp;
645 </td>
646 </tr></table>
647
648 <pre class="literalblock">
649Exchanges an authorization code for an OAuth2Credentials object.
650
651Args:
652 client_id: string, client identifier.
653 client_secret: string, client secret.
Joe Gregorio52a5c532013-01-24 16:19:07 -0500654 scope: string or iterable of strings, scope(s) to request.
Joe Gregoriof4839b02012-09-06 13:47:24 -0400655 code: string, An authroization code, most likely passed down from
656 the client
657 redirect_uri: string, this is generally set to 'postmessage' to match the
658 redirect_uri that the client specified
659 http: httplib2.Http, optional http instance to use to do the fetch
660 token_uri: string, URI for token endpoint. For convenience
661 defaults to Google's endpoints but any OAuth 2.0 provider can be used.
662Returns:
663 An OAuth2Credentials object.
664
665Raises:
666 FlowExchangeError if the authorization code cannot be exchanged for an
667 access token
668
669</pre>
670 <dl class="fields">
671 <dt>Decorators:</dt>
672 <dd><ul class="nomargin-top">
673 <li><code>@util.positional(4)</code></li>
674 </ul></dd>
675 </dl>
676</td></tr></table>
677</div>
678<a name="credentials_from_clientsecrets_and_code"></a>
679<div>
680<table class="details" border="1" cellpadding="3"
681 cellspacing="0" width="100%" bgcolor="white">
682<tr><td>
683 <table width="100%" cellpadding="0" cellspacing="0" border="0">
684 <tr valign="top"><td>
685 <h3 class="epydoc"><span class="sig"><span class="sig-name">credentials_from_clientsecrets_and_code</span>(<span class="sig-arg">filename</span>,
686 <span class="sig-arg">scope</span>,
687 <span class="sig-arg">code</span>,
688 <span class="sig-arg">message</span>=<span class="sig-default">None</span>,
689 <span class="sig-arg">redirect_uri</span>=<span class="sig-default">'postmessage'</span>,
690 <span class="sig-arg">http</span>=<span class="sig-default">None</span>,
691 <span class="sig-arg">cache</span>=<span class="sig-default">None</span>)</span>
692 </h3>
693 </td><td align="right" valign="top"
694 ><span class="codelink"><a href="oauth2client.client-pysrc.html#credentials_from_clientsecrets_and_code">source&nbsp;code</a></span>&nbsp;
695 </td>
696 </tr></table>
697
698 <pre class="literalblock">
699Returns OAuth2Credentials from a clientsecrets file and an auth code.
700
701Will create the right kind of Flow based on the contents of the clientsecrets
702file or will raise InvalidClientSecretsError for unknown types of Flows.
703
704Args:
705 filename: string, File name of clientsecrets.
Joe Gregorio52a5c532013-01-24 16:19:07 -0500706 scope: string or iterable of strings, scope(s) to request.
Joe Gregoriof4839b02012-09-06 13:47:24 -0400707 code: string, An authorization code, most likely passed down from
708 the client
709 message: string, A friendly string to display to the user if the
710 clientsecrets file is missing or invalid. If message is provided then
711 sys.exit will be called in the case of an error. If message in not
712 provided then clientsecrets.InvalidClientSecretsError will be raised.
713 redirect_uri: string, this is generally set to 'postmessage' to match the
714 redirect_uri that the client specified
715 http: httplib2.Http, optional http instance to use to do the fetch
716 cache: An optional cache service client that implements get() and set()
717 methods. See clientsecrets.loadfile() for details.
718
719Returns:
720 An OAuth2Credentials object.
721
722Raises:
723 FlowExchangeError if the authorization code cannot be exchanged for an
724 access token
725 UnknownClientSecretsFlowError if the file describes an unknown kind of Flow.
726 clientsecrets.InvalidClientSecretsError if the clientsecrets file is
727 invalid.
728
729</pre>
730 <dl class="fields">
731 <dt>Decorators:</dt>
732 <dd><ul class="nomargin-top">
733 <li><code>@util.positional(3)</code></li>
734 </ul></dd>
735 </dl>
736</td></tr></table>
737</div>
738<a name="flow_from_clientsecrets"></a>
739<div>
740<table class="details" border="1" cellpadding="3"
741 cellspacing="0" width="100%" bgcolor="white">
742<tr><td>
743 <table width="100%" cellpadding="0" cellspacing="0" border="0">
744 <tr valign="top"><td>
745 <h3 class="epydoc"><span class="sig"><span class="sig-name">flow_from_clientsecrets</span>(<span class="sig-arg">filename</span>,
746 <span class="sig-arg">scope</span>,
747 <span class="sig-arg">redirect_uri</span>=<span class="sig-default">None</span>,
748 <span class="sig-arg">message</span>=<span class="sig-default">None</span>,
749 <span class="sig-arg">cache</span>=<span class="sig-default">None</span>)</span>
750 </h3>
751 </td><td align="right" valign="top"
752 ><span class="codelink"><a href="oauth2client.client-pysrc.html#flow_from_clientsecrets">source&nbsp;code</a></span>&nbsp;
753 </td>
754 </tr></table>
755
756 <pre class="literalblock">
757Create a Flow from a clientsecrets file.
758
759Will create the right kind of Flow based on the contents of the clientsecrets
760file or will raise InvalidClientSecretsError for unknown types of Flows.
761
762Args:
763 filename: string, File name of client secrets.
Joe Gregorio52a5c532013-01-24 16:19:07 -0500764 scope: string or iterable of strings, scope(s) to request.
Joe Gregoriof4839b02012-09-06 13:47:24 -0400765 redirect_uri: string, Either the string 'urn:ietf:wg:oauth:2.0:oob' for
766 a non-web-based application, or a URI that handles the callback from
767 the authorization server.
768 message: string, A friendly string to display to the user if the
769 clientsecrets file is missing or invalid. If message is provided then
770 sys.exit will be called in the case of an error. If message in not
771 provided then clientsecrets.InvalidClientSecretsError will be raised.
772 cache: An optional cache service client that implements get() and set()
773 methods. See clientsecrets.loadfile() for details.
774
775Returns:
776 A Flow object.
777
778Raises:
779 UnknownClientSecretsFlowError if the file describes an unknown kind of Flow.
780 clientsecrets.InvalidClientSecretsError if the clientsecrets file is
781 invalid.
782
783</pre>
784 <dl class="fields">
785 <dt>Decorators:</dt>
786 <dd><ul class="nomargin-top">
787 <li><code>@util.positional(2)</code></li>
788 </ul></dd>
789 </dl>
790</td></tr></table>
791</div>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400792<br />
793<!-- ==================== VARIABLES DETAILS ==================== -->
794<a name="section-VariablesDetails"></a>
795<table class="details" border="1" cellpadding="3"
796 cellspacing="0" width="100%" bgcolor="white">
797<tr bgcolor="#70b0f0" class="table-header">
798 <td colspan="2" class="table-header">
799 <table border="0" cellpadding="0" cellspacing="0" width="100%">
800 <tr valign="top">
801 <td align="left"><span class="table-header">Variables Details</span></td>
802 <td align="right" valign="top"
803 ><span class="options">[<a href="#section-VariablesDetails"
804 class="privatelink" onclick="toggle_private();"
805 >hide private</a>]</span></td>
806 </tr>
807 </table>
808 </td>
809</tr>
810</table>
811<a name="ID_TOKEN_VERIFICATON_CERTS"></a>
812<div>
813<table class="details" border="1" cellpadding="3"
814 cellspacing="0" width="100%" bgcolor="white">
815<tr><td>
816 <h3 class="epydoc">ID_TOKEN_VERIFICATON_CERTS</h3>
817
818 <dl class="fields">
819 </dl>
820 <dl class="fields">
821 <dt>Value:</dt>
822 <dd><table><tr><td><pre class="variable">
Joe Gregoriof4839b02012-09-06 13:47:24 -0400823'https://www.googleapis.com/oauth2/v1/certs'
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400824</pre></td></tr></table>
825</dd>
826 </dl>
827</td></tr></table>
828</div>
829<br />
830<!-- ==================== NAVIGATION BAR ==================== -->
831<table class="navbar" border="0" width="100%" cellpadding="0"
832 bgcolor="#a0c0ff" cellspacing="0">
833 <tr valign="middle">
834
835 <!-- Tree link -->
836 <th>&nbsp;&nbsp;&nbsp;<a
837 href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
838
839 <!-- Index link -->
840 <th>&nbsp;&nbsp;&nbsp;<a
841 href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
842
843 <!-- Help link -->
844 <th>&nbsp;&nbsp;&nbsp;<a
845 href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
846
847 <th class="navbar" width="100%"></th>
848 </tr>
849</table>
850<table border="0" cellpadding="0" cellspacing="0" width="100%%">
851 <tr>
852 <td align="left" class="footer">
Joe Gregorio52a5c532013-01-24 16:19:07 -0500853 Generated by Epydoc 3.0.1 on Thu Jan 24 16:14:31 2013
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400854 </td>
855 <td align="right" class="footer">
856 <a target="mainFrame" href="http://epydoc.sourceforge.net"
857 >http://epydoc.sourceforge.net</a>
858 </td>
859 </tr>
860</table>
861
862<script type="text/javascript">
863 <!--
864 // Private objects are initially displayed (because if
865 // javascript is turned off then we want them to be
866 // visible); but by default, we want to hide them. So hide
867 // them unless we have a cookie that says to show them.
868 checkCookie();
869 // -->
870</script>
871</body>
872</html>