Guida rapida: esegui un'app Search Console in Python

Questa app web di esempio stampa l'elenco dei siti a cui puoi accedere e le Sitemap, per ciascuno di questi siti.

Requisiti

Per eseguire questo programma, avrai bisogno di:

  • Accesso a internet e a un browser web per autorizzare l'app di esempio.
  • Un Account Google con almeno un sito web verificato in Google Search Console.
  • Python 3 e il framework dell'applicazione web flask.

Istruzioni

Per questo esempio, modificherai l'esempio OAuth 2.0 per applicazioni server web applicazione. Questa app Python di esempio utilizza il framework dell'applicazione web Flask per eseguire un un'applicazione basata sul web che gestisce le chiavi OAuth e chiama un'API Google Cloud. Tu adatterà l'esempio collegato in modo che chiami l'API Search Console e stamperà il porta a una pagina web.

Segui le istruzioni di configurazione nella pagina di esempio OAuth di cui sopra e copia codice campione, quindi modificalo come mostrato di seguito. In particolare, segui le istruzioni per la configurazione dell'ambiente di programmazione, configurazione (o riutilizzo) di un progetto che possono accedere all'API Search Console in Google Cloud Console e generare credenziali per un'applicazione web.

Utilizzerai l'esempio di codice completo per Python come codice sorgente per questo esempio.

Per sapere quali modifiche devi apportare agli elementi collegati, consulta la sezione Modifiche riportata di seguito. istruzioni.

Se hai bisogno di accedere al client Python dell'API di Google da un App Engine di Google devi utilizzare un account di servizio per gestire le tue autorizzazioni.

Modifiche

Quando segui le istruzioni nella pagina di esempio Oauth2 collegata, imposta le seguenti modifiche:

  1. Attiva l'API Google Search Console anziché l'API Drive.
  2. Copia l'applicazione di esempio alla fine del documento OAUth di cui rimanda il link sopra. e sostituisco

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

  3. Sostituisci il corpo del linguaggio Python test_api_request() con il seguente codice:

    @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. Durante i nostri test, abbiamo dovuto impostare manualmente OAUTHLIB_INSECURE_TRANSPORT a 1 nell'ambiente Bash: export OAUTHLIB_INSECURE_TRANSPORT=1. Se ricevi errori relativi a HTTPS necessari per eseguire l'app di esempio, prova a impostare questa variabile.