<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="#getCertForOpenIdConnect">getCertForOpenIdConnect()</a></code></p>
<p class="firstline">A description of how to use this function</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(token_handle=None, 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="getCertForOpenIdConnect">getCertForOpenIdConnect()</code>
  <pre>A description of how to use this function

Args:

Returns:
  An object of the form:

    {
    "keys": [
      {
        "use": "sig",
        "e": "A String",
        "kty": "RSA",
        "alg": "RS256",
        "n": "A String",
        "kid": "A String",
      },
    ],
  }</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(token_handle=None, access_token=None, id_token=None)</code>
  <pre>A description of how to use this function

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

Returns:
  An object of the form:

    {
    "issued_to": "A String", # To whom was the token issued to. In general the same as audience.
    "token_handle": "A String", # The token handle associated with this token.
    "user_id": "A String", # The obfuscated user id.
    "expires_in": 42, # The expiry time of the token, as number of seconds left until expiry.
    "access_type": "A String", # The access type granted with this token. It can be offline or online.
    "audience": "A String", # Who is the intended audience for this token. In general the same as issued_to.
    "scope": "A String", # The space separated list of scopes granted to this token.
    "email": "A String", # The email address of the user. Present only if the email scope is present in the request.
    "verified_email": 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>