Cet exemple d'application Web affiche la liste des sites auxquels vous pouvez accéder et les sitemaps, le cas échéant, pour chacun de ces sites.
Conditions requises
Pour exécuter ce programme, vous avez besoin des éléments suivants:
- Un accès à Internet et à un navigateur Web afin d'autoriser l'application exemple
- Un compte Google avec au moins un site Web validé dans la Google Search Console.
- Python 3 et le framework d'application Web flask.
Instructions
Pour cet exemple, vous allez adapter l'exemple d'application OAuth 2.0 pour les applications de serveur Web. Cet exemple d'application Python utilise le framework d'application Web Flask pour exécuter une application Web qui gère les clés OAuth et appelle une API Google Cloud. Vous allez adapter l'exemple associé pour appeler l'API Search Console et imprimer les résultats sur une page Web.
Suivez les instructions de configuration de la page d'exemple OAuth dont le lien figure ci-dessus, copiez l'exemple de code, puis modifiez-le comme indiqué ci-dessous. Plus précisément, suivez les instructions de configuration de votre environnement de codage, configurez (ou réutilisez) un projet pouvant accéder à l'API Search Console dans la console Google Cloud et générez des identifiants pour une application Web.
Vous allez utiliser l'exemple de code complet pour Python comme code source pour cet exemple.
Consultez la section Modifications ci-dessous pour découvrir les modifications que vous devez apporter aux instructions associées.
Si vous devez accéder au client Python des API Google à partir d'un projet Google App Engine, vous devez utiliser un compte de service pour gérer vos autorisations.
Modifications
Lorsque vous suivez les instructions de la page d'exemple Oauth2 associée, apportez les modifications suivantes:
- Activez l'API Google Search Console plutôt que l'API Drive.
Copiez l'exemple d'application à la fin du document OAUth dont le lien figure ci-dessus, et remplacez
SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly'] API_SERVICE_NAME = 'drive' API_VERSION = 'v2'
par ceci :SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly'] API_SERVICE_NAME = 'searchconsole' API_VERSION = 'v1'
Remplacez le corps de la fonction
test_api_request()
du langage Python par le code suivant :@app.route('/test') def test_api_request(): if 'credentials' not in flask.session: return flask.redirect('authorize') # Load credentials from the session. credentials = google.oauth2.credentials.Credentials( **flask.session['credentials']) # Retrieve list of properties in account search_console_service = googleapiclient.discovery.build( API_SERVICE_NAME, API_VERSION, credentials=credentials) site_list = search_console_service.sites().list().execute() # Filter for verified URL-prefix websites. verified_sites_urls = [s['siteUrl'] for s in site_list['siteEntry'] if s['permissionLevel'] != 'siteUnverifiedUser' and s['siteUrl'].startswith('http')] # Print the sitemaps for all websites that you can access. results = '<!DOCTYPE html><html><body><table><tr><th>Verified site</th><th>Sitemaps</th></tr>' for site_url in verified_sites_urls: # Retrieve list of sitemaps submitted sitemaps = search_console_service.sitemaps().list(siteUrl=site_url).execute() results += '<tr><td>%s</td>' % (site_url) # Add a row with the site and the list of sitemaps if 'sitemap' in sitemaps: sitemap_list = "<br />".join([s['path'] for s in sitemaps['sitemap']]) else: sitemap_list = "<i>None</i>" results += '<td>%s</td></tr>' % (sitemap_list) results += '</table></body></html>' # Save credentials back to session in case access token was refreshed. # ACTION ITEM: In a production app, you likely want to save these # credentials in a persistent database instead. flask.session['credentials'] = credentials_to_dict(credentials) return results
Lors de nos tests, nous avons dû définir manuellement OAUTHLIB_INSECURE_TRANSPORT sur 1 dans l'environnement Bash:
export OAUTHLIB_INSECURE_TRANSPORT=1
. Si vous obtenez des erreurs concernant le protocole HTTPS requis pour exécuter l'application exemple, essayez de définir cette variable.