blob: 7d26f004196b433b1a9e4f8ed88b0ac5715b97bd [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.appengine</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;appengine
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.appengine-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 appengine</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html">source&nbsp;code</a></span></p>
56<pre class="literalblock">
57Utilities for Google App Engine
58
59Utilities for making it easier to use OAuth 2.0 on Google App Engine.
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.appengine.InvalidClientSecretsError-class.html" class="summary-name">InvalidClientSecretsError</a><br />
89 The client_secrets.json file is malformed or missing required fields.
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">
Joe Gregorio1b425aa2012-08-24 12:04:34 -040096 <a href="oauth2client.appengine.InvalidXsrfTokenError-class.html" class="summary-name">InvalidXsrfTokenError</a><br />
97 The XSRF token is invalid or expired.
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.appengine.SiteXsrfSecretKey-class.html" class="summary-name">SiteXsrfSecretKey</a><br />
105 Storage for the sites XSRF secret key.
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">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400112 <a href="oauth2client.appengine.AppAssertionCredentials-class.html" class="summary-name">AppAssertionCredentials</a><br />
113 Credentials object for App Engine Assertion Grants
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.appengine.FlowProperty-class.html" class="summary-name">FlowProperty</a><br />
121 App Engine datastore Property for Flow.
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.appengine.CredentialsProperty-class.html" class="summary-name">CredentialsProperty</a><br />
129 App Engine datastore Property for Credentials.
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">
136 <a href="oauth2client.appengine.StorageByKeyName-class.html" class="summary-name">StorageByKeyName</a><br />
137 Store and retrieve a single credential to and from
138the App Engine datastore.
139 </td>
140 </tr>
141<tr>
142 <td width="15%" align="right" valign="top" class="summary">
143 <span class="summary-type">&nbsp;</span>
144 </td><td class="summary">
145 <a href="oauth2client.appengine.CredentialsModel-class.html" class="summary-name">CredentialsModel</a><br />
146 Storage for OAuth 2.0 Credentials
147 </td>
148 </tr>
149<tr>
150 <td width="15%" align="right" valign="top" class="summary">
151 <span class="summary-type">&nbsp;</span>
152 </td><td class="summary">
153 <a href="oauth2client.appengine.OAuth2Decorator-class.html" class="summary-name">OAuth2Decorator</a><br />
154 Utility for making OAuth 2.0 easier.
155 </td>
156 </tr>
157<tr>
158 <td width="15%" align="right" valign="top" class="summary">
159 <span class="summary-type">&nbsp;</span>
160 </td><td class="summary">
161 <a href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html" class="summary-name">OAuth2DecoratorFromClientSecrets</a><br />
162 An OAuth2Decorator that builds from a clientsecrets file.
163 </td>
164 </tr>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400165</table>
166<!-- ==================== FUNCTIONS ==================== -->
167<a name="section-Functions"></a>
168<table class="summary" border="1" cellpadding="3"
169 cellspacing="0" width="100%" bgcolor="white">
170<tr bgcolor="#70b0f0" class="table-header">
171 <td colspan="2" class="table-header">
172 <table border="0" cellpadding="0" cellspacing="0" width="100%">
173 <tr valign="top">
174 <td align="left"><span class="table-header">Functions</span></td>
175 <td align="right" valign="top"
176 ><span class="options">[<a href="#section-Functions"
177 class="privatelink" onclick="toggle_private();"
178 >hide private</a>]</span></td>
179 </tr>
180 </table>
181 </td>
182</tr>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400183<tr class="private">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400184 <td width="15%" align="right" valign="top" class="summary">
185 <span class="summary-type">&nbsp;</span>
186 </td><td class="summary">
187 <table width="100%" cellpadding="0" cellspacing="0" border="0">
188 <tr>
Joe Gregorio0cd347a2012-08-30 08:22:27 -0400189 <td><span class="summary-sig"><a href="oauth2client.appengine-module.html#_safe_html" class="summary-sig-name" onclick="show_private();">_safe_html</a>(<span class="summary-sig-arg">s</span>)</span><br />
190 Escape text to make it safe to display.</td>
191 <td align="right" valign="top">
192 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#_safe_html">source&nbsp;code</a></span>
193
194 </td>
195 </tr>
196 </table>
197
198 </td>
199 </tr>
200<tr class="private">
201 <td width="15%" align="right" valign="top" class="summary">
202 <span class="summary-type">&nbsp;</span>
203 </td><td class="summary">
204 <table width="100%" cellpadding="0" cellspacing="0" border="0">
205 <tr>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400206 <td><span class="summary-sig"><a name="_generate_new_xsrf_secret_key"></a><span class="summary-sig-name">_generate_new_xsrf_secret_key</span>()</span><br />
207 Returns a random XSRF secret key.</td>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400208 <td align="right" valign="top">
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400209 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#_generate_new_xsrf_secret_key">source&nbsp;code</a></span>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400210
211 </td>
212 </tr>
213 </table>
214
215 </td>
216 </tr>
217<tr>
218 <td width="15%" align="right" valign="top" class="summary">
219 <span class="summary-type">&nbsp;</span>
220 </td><td class="summary">
221 <table width="100%" cellpadding="0" cellspacing="0" border="0">
222 <tr>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400223 <td><span class="summary-sig"><a href="oauth2client.appengine-module.html#xsrf_secret_key" class="summary-sig-name">xsrf_secret_key</a>()</span><br />
224 Return the secret key for use for XSRF protection.</td>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400225 <td align="right" valign="top">
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400226 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#xsrf_secret_key">source&nbsp;code</a></span>
227
228 </td>
229 </tr>
230 </table>
231
232 </td>
233 </tr>
234<tr class="private">
235 <td width="15%" align="right" valign="top" class="summary">
236 <span class="summary-type">&nbsp;</span>
237 </td><td class="summary">
238 <table width="100%" cellpadding="0" cellspacing="0" border="0">
239 <tr>
240 <td><span class="summary-sig"><a href="oauth2client.appengine-module.html#_build_state_value" class="summary-sig-name" onclick="show_private();">_build_state_value</a>(<span class="summary-sig-arg">request_handler</span>,
241 <span class="summary-sig-arg">user</span>)</span><br />
242 Composes the value for the 'state' parameter.</td>
243 <td align="right" valign="top">
244 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#_build_state_value">source&nbsp;code</a></span>
245
246 </td>
247 </tr>
248 </table>
249
250 </td>
251 </tr>
252<tr class="private">
253 <td width="15%" align="right" valign="top" class="summary">
254 <span class="summary-type">&nbsp;</span>
255 </td><td class="summary">
256 <table width="100%" cellpadding="0" cellspacing="0" border="0">
257 <tr>
258 <td><span class="summary-sig"><a href="oauth2client.appengine-module.html#_parse_state_value" class="summary-sig-name" onclick="show_private();">_parse_state_value</a>(<span class="summary-sig-arg">state</span>,
259 <span class="summary-sig-arg">user</span>)</span><br />
260 Parse the value of the 'state' parameter.</td>
261 <td align="right" valign="top">
262 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#_parse_state_value">source&nbsp;code</a></span>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400263
264 </td>
265 </tr>
266 </table>
267
268 </td>
269 </tr>
270</table>
271<!-- ==================== VARIABLES ==================== -->
272<a name="section-Variables"></a>
273<table class="summary" border="1" cellpadding="3"
274 cellspacing="0" width="100%" bgcolor="white">
275<tr bgcolor="#70b0f0" class="table-header">
276 <td colspan="2" class="table-header">
277 <table border="0" cellpadding="0" cellspacing="0" width="100%">
278 <tr valign="top">
279 <td align="left"><span class="table-header">Variables</span></td>
280 <td align="right" valign="top"
281 ><span class="options">[<a href="#section-Variables"
282 class="privatelink" onclick="toggle_private();"
283 >hide private</a>]</span></td>
284 </tr>
285 </table>
286 </td>
287</tr>
288<tr>
289 <td width="15%" align="right" valign="top" class="summary">
290 <span class="summary-type">&nbsp;</span>
291 </td><td class="summary">
Joe Gregorioe7a0c472012-07-12 11:46:04 -0400292 <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code>
293 </td>
294 </tr>
295<tr>
296 <td width="15%" align="right" valign="top" class="summary">
297 <span class="summary-type">&nbsp;</span>
298 </td><td class="summary">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400299 <a name="OAUTH2CLIENT_NAMESPACE"></a><span class="summary-name">OAUTH2CLIENT_NAMESPACE</span> = <code title="'oauth2client#ns'"><code class="variable-quote">'</code><code class="variable-string">oauth2client#ns</code><code class="variable-quote">'</code></code>
300 </td>
301 </tr>
302<tr>
303 <td width="15%" align="right" valign="top" class="summary">
304 <span class="summary-type">&nbsp;</span>
305 </td><td class="summary">
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400306 <a name="XSRF_MEMCACHE_ID"></a><span class="summary-name">XSRF_MEMCACHE_ID</span> = <code title="'xsrf_secret_key'"><code class="variable-quote">'</code><code class="variable-string">xsrf_secret_key</code><code class="variable-quote">'</code></code>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400307 </td>
308 </tr>
309<tr>
310 <td width="15%" align="right" valign="top" class="summary">
311 <span class="summary-type">&nbsp;</span>
312 </td><td class="summary">
313 <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'oauth2client'"><code class="variable-quote">'</code><code class="variable-string">oauth2client</code><code class="variable-quote">'</code></code>
314 </td>
315 </tr>
316</table>
317<!-- ==================== FUNCTION DETAILS ==================== -->
318<a name="section-FunctionDetails"></a>
319<table class="details" border="1" cellpadding="3"
320 cellspacing="0" width="100%" bgcolor="white">
321<tr bgcolor="#70b0f0" class="table-header">
322 <td colspan="2" class="table-header">
323 <table border="0" cellpadding="0" cellspacing="0" width="100%">
324 <tr valign="top">
325 <td align="left"><span class="table-header">Function Details</span></td>
326 <td align="right" valign="top"
327 ><span class="options">[<a href="#section-FunctionDetails"
328 class="privatelink" onclick="toggle_private();"
329 >hide private</a>]</span></td>
330 </tr>
331 </table>
332 </td>
333</tr>
334</table>
Joe Gregorio0cd347a2012-08-30 08:22:27 -0400335<a name="_safe_html"></a>
336<div class="private">
337<table class="details" border="1" cellpadding="3"
338 cellspacing="0" width="100%" bgcolor="white">
339<tr><td>
340 <table width="100%" cellpadding="0" cellspacing="0" border="0">
341 <tr valign="top"><td>
342 <h3 class="epydoc"><span class="sig"><span class="sig-name">_safe_html</span>(<span class="sig-arg">s</span>)</span>
343 </h3>
344 </td><td align="right" valign="top"
345 ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#_safe_html">source&nbsp;code</a></span>&nbsp;
346 </td>
347 </tr></table>
348
349 <pre class="literalblock">
350Escape text to make it safe to display.
351
352Args:
353 s: string, The text to escape.
354
355Returns:
356 The escaped text as a string.
357
358</pre>
359 <dl class="fields">
360 </dl>
361</td></tr></table>
362</div>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400363<a name="xsrf_secret_key"></a>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400364<div>
365<table class="details" border="1" cellpadding="3"
366 cellspacing="0" width="100%" bgcolor="white">
367<tr><td>
368 <table width="100%" cellpadding="0" cellspacing="0" border="0">
369 <tr valign="top"><td>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400370 <h3 class="epydoc"><span class="sig"><span class="sig-name">xsrf_secret_key</span>()</span>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400371 </h3>
372 </td><td align="right" valign="top"
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400373 ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#xsrf_secret_key">source&nbsp;code</a></span>&nbsp;
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400374 </td>
375 </tr></table>
376
377 <pre class="literalblock">
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400378Return the secret key for use for XSRF protection.
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400379
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400380If the Site entity does not have a secret key, this method will also create
381one and persist it.
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400382
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400383Returns:
384 The secret key.
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400385
386</pre>
387 <dl class="fields">
388 </dl>
389</td></tr></table>
390</div>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400391<a name="_build_state_value"></a>
392<div class="private">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400393<table class="details" border="1" cellpadding="3"
394 cellspacing="0" width="100%" bgcolor="white">
395<tr><td>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400396 <table width="100%" cellpadding="0" cellspacing="0" border="0">
397 <tr valign="top"><td>
398 <h3 class="epydoc"><span class="sig"><span class="sig-name">_build_state_value</span>(<span class="sig-arg">request_handler</span>,
399 <span class="sig-arg">user</span>)</span>
400 </h3>
401 </td><td align="right" valign="top"
402 ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#_build_state_value">source&nbsp;code</a></span>&nbsp;
403 </td>
404 </tr></table>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400405
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400406 <pre class="literalblock">
407Composes the value for the 'state' parameter.
408
409Packs the current request URI and an XSRF token into an opaque string that
410can be passed to the authentication server via the 'state' parameter.
411
412Args:
413 request_handler: webapp.RequestHandler, The request.
414 user: google.appengine.api.users.User, The current user.
415
416Returns:
417 The state value as a string.
418
419</pre>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400420 <dl class="fields">
421 </dl>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400422</td></tr></table>
423</div>
424<a name="_parse_state_value"></a>
425<div class="private">
426<table class="details" border="1" cellpadding="3"
427 cellspacing="0" width="100%" bgcolor="white">
428<tr><td>
429 <table width="100%" cellpadding="0" cellspacing="0" border="0">
430 <tr valign="top"><td>
431 <h3 class="epydoc"><span class="sig"><span class="sig-name">_parse_state_value</span>(<span class="sig-arg">state</span>,
432 <span class="sig-arg">user</span>)</span>
433 </h3>
434 </td><td align="right" valign="top"
435 ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#_parse_state_value">source&nbsp;code</a></span>&nbsp;
436 </td>
437 </tr></table>
438
439 <pre class="literalblock">
440Parse the value of the 'state' parameter.
441
442Parses the value and validates the XSRF token in the state parameter.
443
444Args:
445 state: string, The value of the state parameter.
446 user: google.appengine.api.users.User, The current user.
447
448Raises:
449 InvalidXsrfTokenError: if the XSRF token is invalid.
450
451Returns:
452 The redirect URI.
453
454</pre>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400455 <dl class="fields">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400456 </dl>
457</td></tr></table>
458</div>
459<br />
460<!-- ==================== NAVIGATION BAR ==================== -->
461<table class="navbar" border="0" width="100%" cellpadding="0"
462 bgcolor="#a0c0ff" cellspacing="0">
463 <tr valign="middle">
464
465 <!-- Tree link -->
466 <th>&nbsp;&nbsp;&nbsp;<a
467 href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
468
469 <!-- Index link -->
470 <th>&nbsp;&nbsp;&nbsp;<a
471 href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
472
473 <!-- Help link -->
474 <th>&nbsp;&nbsp;&nbsp;<a
475 href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
476
477 <th class="navbar" width="100%"></th>
478 </tr>
479</table>
480<table border="0" cellpadding="0" cellspacing="0" width="100%%">
481 <tr>
482 <td align="left" class="footer">
Joe Gregorio0cd347a2012-08-30 08:22:27 -0400483 Generated by Epydoc 3.0.1 on Thu Aug 30 07:12:42 2012
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400484 </td>
485 <td align="right" class="footer">
486 <a target="mainFrame" href="http://epydoc.sourceforge.net"
487 >http://epydoc.sourceforge.net</a>
488 </td>
489 </tr>
490</table>
491
492<script type="text/javascript">
493 <!--
494 // Private objects are initially displayed (because if
495 // javascript is turned off then we want them to be
496 // visible); but by default, we want to hide them. So hide
497 // them unless we have a cookie that says to show them.
498 checkCookie();
499 // -->
500</script>
501</body>
502</html>