3939class Credentials (credentials .Scoped , credentials .Credentials ):
4040 """Credentials using OAuth 2.0 access and refresh tokens."""
4141
42- def __init__ (self , token , refresh_token = None , token_uri = None ,
43- client_id = None , client_secret = None , scopes = None ):
42+ def __init__ (self , token , refresh_token = None , id_token = None ,
43+ token_uri = None , client_id = None , client_secret = None ,
44+ scopes = None ):
4445 """
4546 Args:
4647 token (Optional(str)): The OAuth 2.0 access token. Can be None
4748 if refresh information is provided.
4849 refresh_token (str): The OAuth 2.0 refresh token. If specified,
4950 credentials can be refreshed.
51+ id_token (str): The Open ID Connect ID Token.
5052 token_uri (str): The OAuth 2.0 authorization server's token
5153 endpoint URI. Must be specified for refresh, can be left as
5254 None if the token can not be refreshed.
@@ -63,6 +65,7 @@ def __init__(self, token, refresh_token=None, token_uri=None,
6365 super (Credentials , self ).__init__ ()
6466 self .token = token
6567 self ._refresh_token = refresh_token
68+ self ._id_token = id_token
6669 self ._scopes = scopes
6770 self ._token_uri = token_uri
6871 self ._client_id = client_id
@@ -79,6 +82,17 @@ def token_uri(self):
7982 URI."""
8083 return self ._token_uri
8184
85+ @property
86+ def id_token (self ):
87+ """Optional[str]: The Open ID Connect ID Token.
88+
89+ Depending on the authorization server and the scopes requested, this
90+ may be populated when credentials are obtained and updated when
91+ :meth:`refresh` is called. This token is a JWT. It can be verified
92+ and decoded using :func:`google.oauth2.id_token.verify_oauth2_token`.
93+ """
94+ return self ._id_token
95+
8296 @property
8397 def client_id (self ):
8498 """Optional[str]: The OAuth 2.0 client ID."""
@@ -106,10 +120,12 @@ def with_scopes(self, scopes):
106120
107121 @_helpers .copy_docstring (credentials .Credentials )
108122 def refresh (self , request ):
109- access_token , refresh_token , expiry , _ = _client .refresh_grant (
110- request , self ._token_uri , self ._refresh_token , self ._client_id ,
111- self ._client_secret )
123+ access_token , refresh_token , expiry , grant_response = (
124+ _client .refresh_grant (
125+ request , self ._token_uri , self ._refresh_token , self ._client_id ,
126+ self ._client_secret ))
112127
113128 self .token = access_token
114129 self .expiry = expiry
115130 self ._refresh_token = refresh_token
131+ self ._id_token = grant_response .get ('id_token' )
0 commit comments