Guía de inicio rápido: Ejecuta una app de Search Console en Python

Esta aplicación web de ejemplo imprime la lista de sitios a los que puedes acceder y los mapas del sitio, si los hubiera, para cada uno de esos sitios.

Requisitos

Para ejecutar este programa, necesitarás lo siguiente:

  • Acceso a Internet y a un navegador web para autorizar la app de ejemplo
  • Una Cuenta de Google con, al menos, un sitio web verificado en Google Search Console
  • Python 3 y el framework de aplicación web flask.

Instrucciones

Para esta muestra, deberás adaptar la muestra de OAuth 2.0 para aplicaciones de servidor web de la aplicación. Esta app de Python de muestra usa el framework de aplicación web flask para ejecutar un aplicación basada en la Web que administra claves de OAuth y llama a una API de Google Cloud. Adaptarás el ejemplo vinculado para llamar a la API de Search Console y, luego, imprimirás los resultados en una página web.

Sigue las instrucciones de configuración en la página de muestra de OAuth vinculada anteriormente y copia el código de muestra y, luego, modifica el código como se muestra a continuación. En concreto, sigue la instrucciones de configuración para tu entorno de programación, configuración (o reutilización) de un proyecto. que pueda acceder a la API de Search Console en la consola de Google Cloud y que generen credenciales para una aplicación web.

Usarás el ejemplo de código completo para lo siguiente: Python como código fuente para esta muestra.

Consulte la sección Modificaciones que aparece a continuación para ver qué cambios debe hacer en las cuentas vinculadas instrucciones.

Si necesitas acceder al cliente de Python de la API de Google desde Google App Engine proyecto, deberás usar una cuenta de servicio para administrar tus permisos.

Modificaciones

Cuando sigas las instrucciones en la página de muestra de OAuth2 vinculada, realiza las siguientes cambios:

  1. Habilita la API de Google Search Console en lugar de la API de Drive.
  2. Copia la solicitud de ejemplo que se encuentra al final del documento OAUth vinculado anteriormente. y reemplazarlo

    SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly']
    API_SERVICE_NAME = 'drive'
    API_VERSION = 'v2'
    
    Con esto:
    SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
    API_SERVICE_NAME = 'searchconsole'
    API_VERSION = 'v1'
    

  3. Reemplaza el cuerpo del lenguaje Python test_api_request() con el siguiente código:

    @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. En nuestras pruebas, necesitábamos configurar manualmente OAUTHLIB_INSECURE_TRANSPORT a 1 en el entorno Bash: export OAUTHLIB_INSECURE_TRANSPORT=1. Si recibes errores sobre el HTTPS necesario para ejecutar la app de ejemplo, intenta configurar esa variable.