<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="oauth2_v2.html">Google OAuth2 API</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="oauth2_v2.userinfo.html">userinfo()</a></code>
</p>
<p class="firstline">Returns the userinfo Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#new_batch_http_request">new_batch_http_request()</a></code></p>
<p class="firstline">Create a BatchHttpRequest object based on the discovery document.</p>
<p class="toc_element">
  <code><a href="#tokeninfo">tokeninfo(access_token=None, id_token=None)</a></code></p>
<p class="firstline">A description of how to use this function</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="new_batch_http_request">new_batch_http_request()</code>
  <pre>Create a BatchHttpRequest object based on the discovery document.

                Args:
                  callback: callable, A callback to be called for each response, of the
                    form callback(id, response, exception). The first parameter is the
                    request id, and the second is the deserialized response object. The
                    third is an apiclient.errors.HttpError exception object if an HTTP
                    error occurred while processing the request, or None if no error
                    occurred.

                Returns:
                  A BatchHttpRequest object based on the discovery document.
                </pre>
</div>

<div class="method">
    <code class="details" id="tokeninfo">tokeninfo(access_token=None, id_token=None)</code>
  <pre>A description of how to use this function

Args:
  access_token: string, A parameter
  id_token: string, A parameter

Returns:
  An object of the form:

    {
  &quot;audience&quot;: &quot;A String&quot;, # Who is the intended audience for this token. In general the same as issued_to.
  &quot;email&quot;: &quot;A String&quot;, # The email address of the user. Present only if the email scope is present in the request.
  &quot;expires_in&quot;: 42, # The expiry time of the token, as number of seconds left until expiry.
  &quot;issued_to&quot;: &quot;A String&quot;, # To whom was the token issued to. In general the same as audience.
  &quot;scope&quot;: &quot;A String&quot;, # The space separated list of scopes granted to this token.
  &quot;user_id&quot;: &quot;A String&quot;, # The obfuscated user id.
  &quot;verified_email&quot;: True or False, # Boolean flag which is true if the email address is verified. Present only if the email scope is present in the request.
}</pre>
</div>

</body></html>