Krótkie wprowadzenie: uruchamianie aplikacji Search Console w Pythonie

Ta przykładowa aplikacja internetowa wyświetla listę dostępnych witryn oraz ewentualne mapy witryn każdej z nich.

Wymagania

Aby przeprowadzić ten program, musisz mieć:

  • Dostęp do internetu i przeglądarka w celu autoryzacji przykładowej aplikacji.
  • Konto Google z co najmniej 1 witryną zweryfikowaną w Google Search Console.
  • Python 3 i platforma aplikacji internetowej flask.

Instrukcje

W tym przykładzie dostosujesz przykładową aplikację OAuth 2.0 na potrzeby aplikacji serwera WWW. Ta przykładowa aplikacja w Pythonie korzysta z platformy aplikacji internetowych flask do uruchamiania aplikacji internetowej, która zarządza kluczami OAuth i wywołuje interfejs Google Cloud API. Dostosujesz link do przykładu tak, aby wywoływał interfejs Search Console API i wydrukował wyniki na stronie internetowej.

Wykonaj instrukcje konfiguracji podane na przykładowej stronie OAuth, do której link znajdziesz powyżej, skopiuj przykładowy kod, a następnie zmodyfikuj go w sposób pokazany poniżej. W szczególności postępuj zgodnie z instrukcjami konfigurowania swojego środowiska kodowania, konfigurowania (lub ponownego użycia) projektu z dostępem do interfejsu Search Console API w konsoli Google Cloud oraz generowania danych logowania na potrzeby aplikacji internetowej.

Jako kodu źródłowego w tym przykładzie użyjesz przykładowego kompletnego kodu dla języka Python.

Przeczytaj sekcję Zmiany poniżej, aby dowiedzieć się, jakie zmiany należy wprowadzić w podanych instrukcjach.

Jeśli potrzebujesz dostępu do klienta interfejsu Google API Python z poziomu projektu Google App Engine, musisz użyć konta usługi do zarządzania uprawnieniami.

Modyfikacje

Postępując zgodnie z instrukcjami na połączonej przykładowej stronie OAuth2, wprowadź następujące zmiany:

  1. Włącz interfejs Google Search Console API zamiast interfejsu Drive API.
  2. Skopiuj przykładową aplikację na końcu dokumentu OAU, do którego link znajduje się powyżej, i zastąp ten fragment:

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

  3. Zastąp treść funkcji test_api_request() w języku Python tym kodem:

    @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. Podczas testów musieliśmy ręcznie ustawić OAUTHLIB_INSECURE_TRANSPORT na 1 w środowisku Bash: export OAUTHLIB_INSECURE_TRANSPORT=1. Jeśli pojawią się błędy dotyczące protokołu HTTPS wymaganego do uruchomienia przykładowej aplikacji, spróbuj ustawić tę zmienną.