I am using the Google FactCheckTools API, and encountering problems.
Here is my code:
import json
from googleapiclient.discovery import build
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient import errors
# If modifying these scopes, delete the file token.json.
SCOPES = ["https://www.googleapis.com/auth/cloud-platform"]
def main():
"""Calls the Fact Check Tools API."""
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(
"credentials.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())
service = build('factchecktools', 'v1alpha1', credentials=creds)
request = service.claims().search(query='Covid')
request.execute()
I get the following error when running main():
HttpError: <HttpError 400 when requesting https://factchecktools.googleapis.com/v1alpha1/claims:search?query=Covid&alt=json returned "Request contains an invalid argument.". Details: "Request contains an invalid argument.">
Everything should work fine up to the request.execute() line.
Here is the documentation of the .claims().search() function: https://developers.google.com/fact-check/tools/api/reference/rest/v1alpha1/claims/search The function requires either a query or a PublisherSiteFilter. I have tried with both, and it always gives me the error 400 as above.
Does anyone know why this could be, and how I could fix it? Any suggestions welcome :)