blob: aa99fff83384c0ba939aa31ac09b5f9e287ac6ae [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 Gregorio52a5c532013-01-24 16:19:07 -0500112 <a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html" class="summary-name">SiteXsrfSecretKeyNDB</a><br />
113 NDB Model for storage for the sites XSRF secret key.
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">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400120 <a href="oauth2client.appengine.AppAssertionCredentials-class.html" class="summary-name">AppAssertionCredentials</a><br />
121 Credentials object for App Engine Assertion Grants
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.FlowProperty-class.html" class="summary-name">FlowProperty</a><br />
129 App Engine datastore Property for Flow.
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.appengine.FlowNDBProperty-class.html" class="summary-name">FlowNDBProperty</a><br />
137 App Engine NDB datastore Property for Flow.
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.appengine.CredentialsProperty-class.html" class="summary-name">CredentialsProperty</a><br />
145 App Engine datastore Property for Credentials.
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">
Joe Gregorio52a5c532013-01-24 16:19:07 -0500152 <a href="oauth2client.appengine.CredentialsNDBProperty-class.html" class="summary-name">CredentialsNDBProperty</a><br />
153 App Engine NDB datastore Property for Credentials.
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">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400160 <a href="oauth2client.appengine.StorageByKeyName-class.html" class="summary-name">StorageByKeyName</a><br />
Joe Gregorio52a5c532013-01-24 16:19:07 -0500161 Store and retrieve a credential to and from the App Engine datastore.
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400162 </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.appengine.CredentialsModel-class.html" class="summary-name">CredentialsModel</a><br />
169 Storage for OAuth 2.0 Credentials
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">
Joe Gregorio52a5c532013-01-24 16:19:07 -0500176 <a href="oauth2client.appengine.CredentialsNDBModel-class.html" class="summary-name">CredentialsNDBModel</a><br />
177 NDB Model for storage of OAuth 2.0 Credentials
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">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400184 <a href="oauth2client.appengine.OAuth2Decorator-class.html" class="summary-name">OAuth2Decorator</a><br />
185 Utility for making OAuth 2.0 easier.
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.appengine.OAuth2DecoratorFromClientSecrets-class.html" class="summary-name">OAuth2DecoratorFromClientSecrets</a><br />
193 An OAuth2Decorator that builds from a clientsecrets file.
194 </td>
195 </tr>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400196</table>
197<!-- ==================== FUNCTIONS ==================== -->
198<a name="section-Functions"></a>
199<table class="summary" border="1" cellpadding="3"
200 cellspacing="0" width="100%" bgcolor="white">
201<tr bgcolor="#70b0f0" class="table-header">
202 <td colspan="2" class="table-header">
203 <table border="0" cellpadding="0" cellspacing="0" width="100%">
204 <tr valign="top">
205 <td align="left"><span class="table-header">Functions</span></td>
206 <td align="right" valign="top"
207 ><span class="options">[<a href="#section-Functions"
208 class="privatelink" onclick="toggle_private();"
209 >hide private</a>]</span></td>
210 </tr>
211 </table>
212 </td>
213</tr>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400214<tr class="private">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400215 <td width="15%" align="right" valign="top" class="summary">
216 <span class="summary-type">&nbsp;</span>
217 </td><td class="summary">
218 <table width="100%" cellpadding="0" cellspacing="0" border="0">
219 <tr>
Joe Gregorio0cd347a2012-08-30 08:22:27 -0400220 <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 />
221 Escape text to make it safe to display.</td>
222 <td align="right" valign="top">
223 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#_safe_html">source&nbsp;code</a></span>
224
225 </td>
226 </tr>
227 </table>
228
229 </td>
230 </tr>
231<tr class="private">
232 <td width="15%" align="right" valign="top" class="summary">
233 <span class="summary-type">&nbsp;</span>
234 </td><td class="summary">
235 <table width="100%" cellpadding="0" cellspacing="0" border="0">
236 <tr>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400237 <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 />
238 Returns a random XSRF secret key.</td>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400239 <td align="right" valign="top">
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400240 <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 -0400241
242 </td>
243 </tr>
244 </table>
245
246 </td>
247 </tr>
248<tr>
249 <td width="15%" align="right" valign="top" class="summary">
250 <span class="summary-type">&nbsp;</span>
251 </td><td class="summary">
252 <table width="100%" cellpadding="0" cellspacing="0" border="0">
253 <tr>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400254 <td><span class="summary-sig"><a href="oauth2client.appengine-module.html#xsrf_secret_key" class="summary-sig-name">xsrf_secret_key</a>()</span><br />
255 Return the secret key for use for XSRF protection.</td>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400256 <td align="right" valign="top">
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400257 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#xsrf_secret_key">source&nbsp;code</a></span>
258
259 </td>
260 </tr>
261 </table>
262
263 </td>
264 </tr>
265<tr class="private">
266 <td width="15%" align="right" valign="top" class="summary">
267 <span class="summary-type">&nbsp;</span>
268 </td><td class="summary">
269 <table width="100%" cellpadding="0" cellspacing="0" border="0">
270 <tr>
271 <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>,
272 <span class="summary-sig-arg">user</span>)</span><br />
273 Composes the value for the 'state' parameter.</td>
274 <td align="right" valign="top">
275 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#_build_state_value">source&nbsp;code</a></span>
276
277 </td>
278 </tr>
279 </table>
280
281 </td>
282 </tr>
283<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 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>,
290 <span class="summary-sig-arg">user</span>)</span><br />
291 Parse the value of the 'state' parameter.</td>
292 <td align="right" valign="top">
293 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#_parse_state_value">source&nbsp;code</a></span>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400294
295 </td>
296 </tr>
297 </table>
298
299 </td>
300 </tr>
Joe Gregoriof4839b02012-09-06 13:47:24 -0400301<tr>
302 <td width="15%" align="right" valign="top" class="summary">
303 <span class="summary-type">&nbsp;</span>
304 </td><td class="summary">
305 <table width="100%" cellpadding="0" cellspacing="0" border="0">
306 <tr>
307 <td><span class="summary-sig"><a href="oauth2client.appengine-module.html#oauth2decorator_from_clientsecrets" class="summary-sig-name">oauth2decorator_from_clientsecrets</a>(<span class="summary-sig-arg">filename</span>,
308 <span class="summary-sig-arg">scope</span>,
309 <span class="summary-sig-arg">message</span>=<span class="summary-sig-default">None</span>,
310 <span class="summary-sig-arg">cache</span>=<span class="summary-sig-default">None</span>)</span><br />
311 Creates an OAuth2Decorator populated from a clientsecrets file.</td>
312 <td align="right" valign="top">
313 <span class="codelink"><a href="oauth2client.appengine-pysrc.html#oauth2decorator_from_clientsecrets">source&nbsp;code</a></span>
314
315 </td>
316 </tr>
317 </table>
318
319 </td>
320 </tr>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400321</table>
322<!-- ==================== VARIABLES ==================== -->
323<a name="section-Variables"></a>
324<table class="summary" border="1" cellpadding="3"
325 cellspacing="0" width="100%" bgcolor="white">
326<tr bgcolor="#70b0f0" class="table-header">
327 <td colspan="2" class="table-header">
328 <table border="0" cellpadding="0" cellspacing="0" width="100%">
329 <tr valign="top">
330 <td align="left"><span class="table-header">Variables</span></td>
331 <td align="right" valign="top"
332 ><span class="options">[<a href="#section-Variables"
333 class="privatelink" onclick="toggle_private();"
334 >hide private</a>]</span></td>
335 </tr>
336 </table>
337 </td>
338</tr>
339<tr>
340 <td width="15%" align="right" valign="top" class="summary">
341 <span class="summary-type">&nbsp;</span>
342 </td><td class="summary">
Joe Gregorio41be8e82013-03-07 10:31:47 -0500343 <a name="ndb"></a><span class="summary-name">ndb</span> = <code title="None">None</code>
344 </td>
345 </tr>
346<tr>
347 <td width="15%" align="right" valign="top" class="summary">
348 <span class="summary-type">&nbsp;</span>
349 </td><td class="summary">
Joe Gregorioe7a0c472012-07-12 11:46:04 -0400350 <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code>
351 </td>
352 </tr>
353<tr>
354 <td width="15%" align="right" valign="top" class="summary">
355 <span class="summary-type">&nbsp;</span>
356 </td><td class="summary">
Joe Gregoriof4839b02012-09-06 13:47:24 -0400357 <a name="OAUTH2CLIENT_NAMESPACE"></a><span class="summary-name">OAUTH2CLIENT_NAMESPACE</span> = <code title="'oauth2client#ns'">'oauth2client#ns'</code>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400358 </td>
359 </tr>
360<tr>
361 <td width="15%" align="right" valign="top" class="summary">
362 <span class="summary-type">&nbsp;</span>
363 </td><td class="summary">
Joe Gregoriof4839b02012-09-06 13:47:24 -0400364 <a name="XSRF_MEMCACHE_ID"></a><span class="summary-name">XSRF_MEMCACHE_ID</span> = <code title="'xsrf_secret_key'">'xsrf_secret_key'</code>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400365 </td>
366 </tr>
367</table>
368<!-- ==================== FUNCTION DETAILS ==================== -->
369<a name="section-FunctionDetails"></a>
370<table class="details" border="1" cellpadding="3"
371 cellspacing="0" width="100%" bgcolor="white">
372<tr bgcolor="#70b0f0" class="table-header">
373 <td colspan="2" class="table-header">
374 <table border="0" cellpadding="0" cellspacing="0" width="100%">
375 <tr valign="top">
376 <td align="left"><span class="table-header">Function Details</span></td>
377 <td align="right" valign="top"
378 ><span class="options">[<a href="#section-FunctionDetails"
379 class="privatelink" onclick="toggle_private();"
380 >hide private</a>]</span></td>
381 </tr>
382 </table>
383 </td>
384</tr>
385</table>
Joe Gregorio0cd347a2012-08-30 08:22:27 -0400386<a name="_safe_html"></a>
387<div class="private">
388<table class="details" border="1" cellpadding="3"
389 cellspacing="0" width="100%" bgcolor="white">
390<tr><td>
391 <table width="100%" cellpadding="0" cellspacing="0" border="0">
392 <tr valign="top"><td>
393 <h3 class="epydoc"><span class="sig"><span class="sig-name">_safe_html</span>(<span class="sig-arg">s</span>)</span>
394 </h3>
395 </td><td align="right" valign="top"
396 ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#_safe_html">source&nbsp;code</a></span>&nbsp;
397 </td>
398 </tr></table>
399
400 <pre class="literalblock">
401Escape text to make it safe to display.
402
403Args:
404 s: string, The text to escape.
405
406Returns:
407 The escaped text as a string.
408
409</pre>
410 <dl class="fields">
411 </dl>
412</td></tr></table>
413</div>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400414<a name="xsrf_secret_key"></a>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400415<div>
416<table class="details" border="1" cellpadding="3"
417 cellspacing="0" width="100%" bgcolor="white">
418<tr><td>
419 <table width="100%" cellpadding="0" cellspacing="0" border="0">
420 <tr valign="top"><td>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400421 <h3 class="epydoc"><span class="sig"><span class="sig-name">xsrf_secret_key</span>()</span>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400422 </h3>
423 </td><td align="right" valign="top"
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400424 ><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 -0400425 </td>
426 </tr></table>
427
428 <pre class="literalblock">
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400429Return the secret key for use for XSRF protection.
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400430
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400431If the Site entity does not have a secret key, this method will also create
432one and persist it.
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400433
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400434Returns:
435 The secret key.
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400436
437</pre>
438 <dl class="fields">
439 </dl>
440</td></tr></table>
441</div>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400442<a name="_build_state_value"></a>
443<div class="private">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400444<table class="details" border="1" cellpadding="3"
445 cellspacing="0" width="100%" bgcolor="white">
446<tr><td>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400447 <table width="100%" cellpadding="0" cellspacing="0" border="0">
448 <tr valign="top"><td>
449 <h3 class="epydoc"><span class="sig"><span class="sig-name">_build_state_value</span>(<span class="sig-arg">request_handler</span>,
450 <span class="sig-arg">user</span>)</span>
451 </h3>
452 </td><td align="right" valign="top"
453 ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#_build_state_value">source&nbsp;code</a></span>&nbsp;
454 </td>
455 </tr></table>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400456
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400457 <pre class="literalblock">
458Composes the value for the 'state' parameter.
459
460Packs the current request URI and an XSRF token into an opaque string that
461can be passed to the authentication server via the 'state' parameter.
462
463Args:
464 request_handler: webapp.RequestHandler, The request.
465 user: google.appengine.api.users.User, The current user.
466
467Returns:
468 The state value as a string.
469
470</pre>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400471 <dl class="fields">
472 </dl>
Joe Gregorio1b425aa2012-08-24 12:04:34 -0400473</td></tr></table>
474</div>
475<a name="_parse_state_value"></a>
476<div class="private">
477<table class="details" border="1" cellpadding="3"
478 cellspacing="0" width="100%" bgcolor="white">
479<tr><td>
480 <table width="100%" cellpadding="0" cellspacing="0" border="0">
481 <tr valign="top"><td>
482 <h3 class="epydoc"><span class="sig"><span class="sig-name">_parse_state_value</span>(<span class="sig-arg">state</span>,
483 <span class="sig-arg">user</span>)</span>
484 </h3>
485 </td><td align="right" valign="top"
486 ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#_parse_state_value">source&nbsp;code</a></span>&nbsp;
487 </td>
488 </tr></table>
489
490 <pre class="literalblock">
491Parse the value of the 'state' parameter.
492
493Parses the value and validates the XSRF token in the state parameter.
494
495Args:
496 state: string, The value of the state parameter.
497 user: google.appengine.api.users.User, The current user.
498
499Raises:
500 InvalidXsrfTokenError: if the XSRF token is invalid.
501
502Returns:
503 The redirect URI.
504
505</pre>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400506 <dl class="fields">
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400507 </dl>
508</td></tr></table>
509</div>
Joe Gregoriof4839b02012-09-06 13:47:24 -0400510<a name="oauth2decorator_from_clientsecrets"></a>
511<div>
512<table class="details" border="1" cellpadding="3"
513 cellspacing="0" width="100%" bgcolor="white">
514<tr><td>
515 <table width="100%" cellpadding="0" cellspacing="0" border="0">
516 <tr valign="top"><td>
517 <h3 class="epydoc"><span class="sig"><span class="sig-name">oauth2decorator_from_clientsecrets</span>(<span class="sig-arg">filename</span>,
518 <span class="sig-arg">scope</span>,
519 <span class="sig-arg">message</span>=<span class="sig-default">None</span>,
520 <span class="sig-arg">cache</span>=<span class="sig-default">None</span>)</span>
521 </h3>
522 </td><td align="right" valign="top"
523 ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#oauth2decorator_from_clientsecrets">source&nbsp;code</a></span>&nbsp;
524 </td>
525 </tr></table>
526
527 <pre class="literalblock">
528Creates an OAuth2Decorator populated from a clientsecrets file.
529
530Args:
531 filename: string, File name of client secrets.
532 scope: string or list of strings, scope(s) of the credentials being
533 requested.
534 message: string, A friendly string to display to the user if the
535 clientsecrets file is missing or invalid. The message may contain HTML and
536 will be presented on the web interface for any method that uses the
537 decorator.
538 cache: An optional cache service client that implements get() and set()
539 methods. See clientsecrets.loadfile() for details.
540
541Returns: An OAuth2Decorator
542
543</pre>
544 <dl class="fields">
545 <dt>Decorators:</dt>
546 <dd><ul class="nomargin-top">
547 <li><code>@util.positional(2)</code></li>
548 </ul></dd>
549 </dl>
550</td></tr></table>
551</div>
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400552<br />
553<!-- ==================== NAVIGATION BAR ==================== -->
554<table class="navbar" border="0" width="100%" cellpadding="0"
555 bgcolor="#a0c0ff" cellspacing="0">
556 <tr valign="middle">
557
558 <!-- Tree link -->
559 <th>&nbsp;&nbsp;&nbsp;<a
560 href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
561
562 <!-- Index link -->
563 <th>&nbsp;&nbsp;&nbsp;<a
564 href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
565
566 <!-- Help link -->
567 <th>&nbsp;&nbsp;&nbsp;<a
568 href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
569
570 <th class="navbar" width="100%"></th>
571 </tr>
572</table>
573<table border="0" cellpadding="0" cellspacing="0" width="100%%">
574 <tr>
575 <td align="left" class="footer">
Joe Gregorio37802c32013-08-06 12:24:05 -0400576 Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
Joe Gregorio5dc0f5c2012-06-05 13:34:31 -0400577 </td>
578 <td align="right" class="footer">
579 <a target="mainFrame" href="http://epydoc.sourceforge.net"
580 >http://epydoc.sourceforge.net</a>
581 </td>
582 </tr>
583</table>
584
585<script type="text/javascript">
586 <!--
587 // Private objects are initially displayed (because if
588 // javascript is turned off then we want them to be
589 // visible); but by default, we want to hide them. So hide
590 // them unless we have a cookie that says to show them.
591 checkCookie();
592 // -->
593</script>
594</body>
595</html>