Reputation: 71
I am writing a small Python program that reads from Google sheets. Everything was right with the code up to yesterday. However, when I tried to run it today it didn't work.
# If modifying these scopes, delete the file token.json.
SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly']
# The spreadsheet ID
SPREADSHEET_ID = 'My spreadsheet ID'
def main():
# Sets the range
RANGE = 'My range'
creds = None
# The file token.json stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'creds.json', SCOPES)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.json', 'w') as token:
token.write(creds.to_json())
When I try to run it, the following Error shows up:
File "path/to/file/file.py", line 50, in main
creds.refresh(Request())
File "/home/User/.local/lib/python3.9/site-packages/google/oauth2/_client.py", line 60, in _handle_error_response
raise exceptions.RefreshError(error_details, response_data)
google.auth.exceptions.RefreshError: ('invalid_scope: Bad Request', {'error': 'invalid_scope', 'error_description': 'Bad Request'})
Upvotes: 7
Views: 8640
Reputation: 21
The error is complaining about scope not being correct. You should make sure whether the scope you have declared in SCOPES variable is same as the value of scopes available in token.json.
If you want to change your scope, you will have to generate a new token.json file by deleting the old one first.
Upvotes: 2
Reputation: 141
I don't know what happened either but for a quick solution, I deleted the token.json file and ran the script again
Upvotes: 14