Guide de démarrage rapide: exécuter une application Search Console en Python

Cet exemple d'application Web imprime la liste des sites auxquels vous pouvez accéder, ainsi que 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 OAuth 2.0 pour les applications de serveur Web l'application. Cet exemple d'application Python utilise le framework d'application Web Flask pour exécuter une 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, puis copiez le puis modifiez le code comme indiqué ci-dessous. Plus précisément, suivez les des instructions de configuration pour votre environnement de codage, de configuration (ou de réutilisation) d'un projet ; pouvant accéder à l'API Search Console dans la console Google Cloud, et générer des identifiants pour une application Web.

Vous utiliserez l'exemple de code complet pour Python comme code source pour cet exemple.

Consultez la section Modifications ci-dessous pour découvrir les changements à apporter aux instructions.

Si vous devez accéder au client Python de l'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, assurez-vous que modifications suivantes:

  1. Activez l'API Google Search Console plutôt que l'API Drive.
  2. Copiez l'exemple d'application indiqué à la fin du document OAUth dont le lien figure ci-dessus. et remplacez ce

    SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly']
    API_SERVICE_NAME = 'drive'
    API_VERSION = 'v2'
    
    Par les lignes de code suivantes:
    SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
    API_SERVICE_NAME = 'searchconsole'
    API_VERSION = 'v1'
    

  3. Remplacer le corps du langage Python test_api_request() 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
    
    

  4. Lors de nos tests, nous avons dû définir manuellement OAUTHLIB_INSECURE_TRANSPORT. à 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 ce paramètre .