我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用oauth2client.client.AccessTokenRefreshError()。
def _refresh(self, http_request): """Refreshes the access_token. Since the underlying App Engine app_identity implementation does its own caching we can skip all the storage hoops and just to a refresh using the API. Args: http_request: callable, a callable that matches the method signature of httplib2.Http.request, used to make the refresh request. Raises: AccessTokenRefreshError: When the refresh fails. """ try: scopes = self.scope.split() (token, _) = app_identity.get_access_token( scopes, service_account_id=self.service_account_id) except app_identity.Error as e: raise AccessTokenRefreshError(str(e)) self.access_token = token
def test_refresh_failure(self): """ Failure to refresh the access token should be treated as auth error. """ def raise_invalid_grant(*args, **kwargs): raise AccessTokenRefreshError() with mock.patch('sndlatr.models.get_credentials') as getter, \ self.notify_mock() as notify: cred = mock.MagicMock(spec=OAuth2Credentials) getter.return_value = cred cred.refresh.side_effect = raise_invalid_grant job = self.create_job(error_cnt=self.JOB_MAX_RETRIES) resp = self._post_send(job) self.assertEquals(resp.status_int, 200) notify.assert_called_with(job, 'auth')
def _refresh(self, http_request): """Refreshes the access_token. Since the underlying App Engine app_identity implementation does its own caching we can skip all the storage hoops and just to a refresh using the API. Args: http_request: callable, a callable that matches the method signature of httplib2.Http.request, used to make the refresh request. Raises: AccessTokenRefreshError: When the refresh fails. """ try: scopes = self.scope.split() (token, _) = app_identity.get_access_token(scopes) except app_identity.Error, e: raise AccessTokenRefreshError(str(e)) self.access_token = token
def _refresh(self, http_request): """Refreshes the access_token. Skip all the storage hoops and just refresh using the API. Args: http_request: callable, a callable that matches the method signature of httplib2.Http.request, used to make the refresh request. Raises: AccessTokenRefreshError: When the refresh fails. """ uri = uritemplate.expand(META, {'scope': self.scope}) response, content = http_request(uri) if response.status == 200: try: d = simplejson.loads(content) except StandardError, e: raise AccessTokenRefreshError(str(e)) self.access_token = d['accessToken'] else: raise AccessTokenRefreshError(content)
def _refresh(self, http): """Refreshes the access token. Since the underlying App Engine app_identity implementation does its own caching we can skip all the storage hoops and just to a refresh using the API. Args: http: unused HTTP object Raises: AccessTokenRefreshError: When the refresh fails. """ try: scopes = self.scope.split() (token, _) = app_identity.get_access_token( scopes, service_account_id=self.service_account_id) except app_identity.Error as e: raise client.AccessTokenRefreshError(str(e)) self.access_token = token
def _refresh(self, http_request): """Refreshes the access_token. Since the underlying App Engine app_identity implementation does its own caching we can skip all the storage hoops and just to a refresh using the API. Args: http_request: callable, a callable that matches the method signature of httplib2.Http.request, used to make the refresh request. Raises: AccessTokenRefreshError: When the refresh fails. """ try: (token, _) = app_identity.get_access_token(self.scope) except app_identity.Error, e: raise AccessTokenRefreshError(str(e)) self.access_token = token
def get_credentials(self, job): credentials = models.get_credentials(job.user_id) if not credentials: logging.error( 'no credentials stored for user {}'.format(job.user_id)) raise HTTPSuccess() logging.debug('refreshing oauth token') try: credentials.refresh(httplib2.Http()) except AccessTokenRefreshError, e: logging.warning('refreshing token failed: ' + str(e)) raise gmail.AuthenticationError() return credentials
def oauth_required(self, method): """Decorator that starts the OAuth 2.0 dance. Starts the OAuth dance for the logged in user if they haven't already granted access for this application. Args: method: callable, to be decorated method of a webapp.RequestHandler instance. """ def check_oauth(request_handler, *args, **kwargs): if self._in_error: self._display_error_message(request_handler) return user = users.get_current_user() # Don't use @login_decorator as this could be used in a POST request. if not user: request_handler.redirect(users.create_login_url( request_handler.request.uri)) return self._create_flow(request_handler) # Store the request URI in 'state' so we can use it later self.flow.params['state'] = _build_state_value(request_handler, user) self.credentials = StorageByKeyName( CredentialsModel, user.user_id(), 'credentials').get() if not self.has_credentials(): return request_handler.redirect(self.authorize_url()) try: return method(request_handler, *args, **kwargs) except AccessTokenRefreshError: return request_handler.redirect(self.authorize_url()) return check_oauth
def test_raise_correct_type_of_exception(self): app_identity_stub = self.ErroringAppIdentityStubImpl() apiproxy_stub_map.apiproxy = apiproxy_stub_map.APIProxyStubMap() apiproxy_stub_map.apiproxy.RegisterStub('app_identity_service', app_identity_stub) apiproxy_stub_map.apiproxy.RegisterStub( 'memcache', memcache_stub.MemcacheServiceStub()) scope = 'http://www.googleapis.com/scope' credentials = appengine.AppAssertionCredentials(scope) http = http_mock.HttpMock(data=DEFAULT_RESP) with self.assertRaises(client.AccessTokenRefreshError): credentials.refresh(http)
def _refresh(self, http_request): """Refreshes the access_token. Skip all the storage hoops and just refresh using the API. Args: http_request: callable, a callable that matches the method signature of httplib2.Http.request, used to make the refresh request. Raises: AccessTokenRefreshError: When the refresh fails. """ query = '?scope=%s' % urllib.quote(self.scope, '') uri = META.replace('{?scope}', query) response, content = http_request(uri) if response.status == 200: try: d = json.loads(content) except StandardError as e: raise AccessTokenRefreshError(str(e)) self.access_token = d['accessToken'] else: if response.status == 404: content += (' This can occur if a VM was created' ' with no service account or scopes.') raise AccessTokenRefreshError(content)
def _refresh(self, http_request): """Refreshes the access_token. Skip all the storage hoops and just refresh using the API. Args: http_request: callable, a callable that matches the method signature of httplib2.Http.request, used to make the refresh request. Raises: AccessTokenRefreshError: When the refresh fails. """ query = '?scope=%s' % urllib.parse.quote(self.scope, '') uri = META.replace('{?scope}', query) response, content = http_request(uri) content = _from_bytes(content) if response.status == 200: try: d = json.loads(content) except Exception as e: raise AccessTokenRefreshError(str(e)) self.access_token = d['accessToken'] else: if response.status == 404: content += (' This can occur if a VM was created' ' with no service account or scopes.') raise AccessTokenRefreshError(content)
def _test_google_api_imports(): try: import httplib2 # noqa from apiclient.discovery import build # noqa from apiclient.errors import HttpError # noqa from oauth2client.client import AccessTokenRefreshError # noqa from oauth2client.client import OAuth2WebServerFlow # noqa from oauth2client.file import Storage # noqa from oauth2client.tools import run_flow, argparser # noqa except ImportError as e: raise ImportError("Missing module required for Google BigQuery " "support: {0}".format(str(e)))
def main(args): storage = Storage('credentials.dat') credentials = storage.get() if credentials is None or credentials.invalid: flow = flow_from_clientsecrets( CLIENT_SECRETS, scope=SCOPES) # run_flow will prompt the user to authorize the application's # access to BigQuery and return the credentials. credentials = tools.run_flow(flow, storage, args) # Create a BigQuery client using the credentials. bigquery_service = discovery.build( 'bigquery', 'v2', credentials=credentials) # List all datasets in BigQuery try: datasets = bigquery_service.datasets() listReply = datasets.list(projectId=args.project_id).execute() print('Dataset list:') pprint.pprint(listReply) except HttpError as err: print('Error in listDatasets:') pprint.pprint(err.content) except AccessTokenRefreshError: print('Credentials have been revoked or expired, please re-run' 'the application to re-authorize')
def _refresh(self, http_request): """Refreshes the access_token. Skip all the storage hoops and just refresh using the API. Args: http_request: callable, a callable that matches the method signature of httplib2.Http.request, used to make the refresh request. Raises: AccessTokenRefreshError: When the refresh fails. """ query = '?scope=%s' % urllib.parse.quote(self.scope, '') uri = META.replace('{?scope}', query) response, content = http_request(uri) if response.status == 200: try: d = json.loads(content) except Exception as e: raise AccessTokenRefreshError(str(e)) self.access_token = d['accessToken'] else: if response.status == 404: content += (' This can occur if a VM was created' ' with no service account or scopes.') raise AccessTokenRefreshError(content)
def makecall(self): # self.service is causing recursion error when left as class attribute #swap service to mock argv = [] service, flags = sample_tools.init( argv, 'webmasters', 'v3', __doc__, __file__, parents=[], scope='https://www.googleapis.com/auth/webmasters.readonly') try: if not self.clientquery['property_uri']: raise SystemExit('Unable to locate client URI for %s. Exiting.' % (self.clientquery['property_uri'])) else: # response = self.service.searchanalytics().query(siteUrl=self.clientquery['property_uri'], body=self.request).execute() #swap response to mock response = service.searchanalytics().query(siteUrl=self.clientquery['property_uri'], body=self.request).execute() #swap response to mock return response except TypeError as error: raise SystemExit('There was an error in constructing the query : %s' % (error)) except HttpError as error: # Handle API errors print('There was an API error : %s : %s' % (error.resp.status, error._get_reason())) response = [self.clientquery['query_date'], self.clientquery['clientName'], self.clientquery['siteMode'], int(0), 'FALSE', error.resp.status, error._get_reason()] return response except AccessTokenRefreshError: raise SystemExit('The credentials have been revoked or expired, please re-run the application to re-authorize') except Exception as e: raise SystemExit(e)
def _run_file_search_query(self, query, item_check, fields="nextPageToken, files(id, name, kind, mimeType, md5Checksum, parents, shared)"): nextPage = "" try: nextPage = "" while nextPage is not None: results = self.client.files().list(pageSize=1000, q=query, fields=fields, pageToken=nextPage, spaces="drive").execute() items = results.get('files', []) try: nextPage = results.get('nextPageToken', None) except: nextPage = None if not items: logger.debug('No files found.') else: logger.debug('{} Files found.'.format(len(items))) for item in items: item_check(item) except AccessTokenRefreshError: # The AccessTokenRefreshError exception is raised if the credentials # have been revoked by the user or they have expired. logger.error('Unable to execute command. The access tokens have been' ' revoked by the user or have expired.')
def find_file(self, name=None, md5=None, sha1=None): """Find one or more files using the name and/or hash in Google Drive.""" matches = [] if not name and not md5 and sha1: logger.error("Google Drive does not support SHA1 hash searching.") return matches if md5: logger.warn("Google Drive does not officially support MD5 searching." " This operation will walk your entire heirarchy comparing" " file metadata.") def std_item_check(item): matches.append(self.convert_file(item)) try: if name: self._run_file_search_query("name contains '{}'".format(name), std_item_check) except AccessTokenRefreshError: # The AccessTokenRefreshError exception is raised if the credentials # have been revoked by the user or they have expired. logger.error('Unable to execute command. The access tokens have been' ' revoked by the user or have expired.') if md5: matches.extend(self._find_by_md5(md5)) return matches
def oauth_required(self, method): """Decorator that starts the OAuth 2.0 dance. Starts the OAuth dance for the logged in user if they haven't already granted access for this application. Args: method: callable, to be decorated method of a webapp.RequestHandler instance. """ def check_oauth(request_handler, *args, **kwargs): if self._in_error: self._display_error_message(request_handler) return user = users.get_current_user() # Don't use @login_decorator as this could be used in a # POST request. if not user: request_handler.redirect(users.create_login_url( request_handler.request.uri)) return self._create_flow(request_handler) # Store the request URI in 'state' so we can use it later self.flow.params['state'] = _build_state_value( request_handler, user) self.credentials = self._storage_class( self._credentials_class, None, self._credentials_property_name, user=user).get() if not self.has_credentials(): return request_handler.redirect(self.authorize_url()) try: resp = method(request_handler, *args, **kwargs) except AccessTokenRefreshError: return request_handler.redirect(self.authorize_url()) finally: self.credentials = None return resp return check_oauth
def oauth_required(self, method): """Decorator that starts the OAuth 2.0 dance. Starts the OAuth dance for the logged in user if they haven't already granted access for this application. Args: method: callable, to be decorated method of a webapp.RequestHandler instance. """ def check_oauth(request_handler, *args, **kwargs): if self._in_error: self._display_error_message(request_handler) return user = users.get_current_user() # Don't use @login_decorator as this could be used in a POST request. if not user: request_handler.redirect(users.create_login_url( request_handler.request.uri)) return self._create_flow(request_handler) # Store the request URI in 'state' so we can use it later self.flow.params['state'] = _build_state_value(request_handler, user) self.credentials = self._storage_class( self._credentials_class, None, self._credentials_property_name, user=user).get() if not self.has_credentials(): return request_handler.redirect(self.authorize_url()) try: resp = method(request_handler, *args, **kwargs) except AccessTokenRefreshError: return request_handler.redirect(self.authorize_url()) finally: self.credentials = None return resp return check_oauth
def oauth_required(self, method): """Decorator that starts the OAuth 2.0 dance. Starts the OAuth dance for the logged in user if they haven't already granted access for this application. Args: method: callable, to be decorated method of a webapp.RequestHandler instance. """ def check_oauth(request_handler, *args, **kwargs): if self._in_error: self._display_error_message(request_handler) return user = users.get_current_user() # Don't use @login_decorator as this could be used in a # POST request. if not user: request_handler.redirect(users.create_login_url( request_handler.request.uri)) return self._create_flow(request_handler) # Store the request URI in 'state' so we can use it later self.flow.params['state'] = _build_state_value( request_handler, user) self.credentials = self._storage_class( self._credentials_class, None, self._credentials_property_name, user=user).get() if not self.has_credentials(): return request_handler.redirect(self.authorize_url()) try: resp = method(request_handler, *args, **kwargs) except client.AccessTokenRefreshError: return request_handler.redirect(self.authorize_url()) finally: self.credentials = None return resp return check_oauth