מדריך למתחילים: הרצת אפליקציית Search Console ב-Python

באפליקציית האינטרנט לדוגמה הזו תודפס רשימת האתרים שיש לכם גישה אליהם, וקובצי ה-sitemap, אם יש, לכל אחד מהאתרים האלה.

דרישות

כדי להפעיל את התוכנית, צריך:

  • גישה לאינטרנט ולדפדפן אינטרנט כדי לתת הרשאה לאפליקציה לדוגמה.
  • חשבון Google עם אתר אחד לפחות מאומת ב-Google Search Console.
  • Python 3 ו-framework של אפליקציית האינטרנט flask.

הוראות

בדוגמה הזו תצטרכו להתאים את האפליקציה לדוגמה של OAuth 2.0 לאפליקציות של שרת אינטרנט. אפליקציית python לדוגמה משתמשת ב-framework של אפליקציית אינטרנט מבקבוקון, כדי להפעיל אפליקציה מבוססת-אינטרנט שמנהלת מפתחות OAuth וקוראת ל-Google Cloud API. תצטרכו להתאים את הדוגמה המקושרת ל-Search Console API ולהדפיס את התוצאות בדף אינטרנט.

פועלים לפי ההוראות להגדרה בדף לדוגמה של OAuth שהקישור אליו מופיע למעלה, ומעתיקים את הקוד לדוגמה ולאחר מכן משנים את הקוד כפי שמוצג בהמשך. עליכם לפעול לפי ההוראות להגדרה של סביבת התכנות, להגדרה (או לשימוש חוזר) בפרויקט שיכול לגשת ל-Search Console API במסוף Google Cloud, ויצירת פרטי כניסה לאפליקציית אינטרנט.

בדוגמה הזו, תשתמשו בדוגמה לקוד מלא ב-Python כקוד המקור.

תוכלו לקרוא שינויים בהמשך כדי לראות אילו שינויים צריך לבצע בהוראות המקושרות.

אם אתם צריכים גישה ללקוח Python ב-Google API מפרויקט ב-Google App Engine, תצטרכו לנהל את ההרשאות שלכם באמצעות חשבון שירות.

שינויים

כשפועלים לפי ההוראות בדף הדוגמה המקושר של Oauth2, צריך לבצע את השינויים הבאים:

  1. להפעיל את Google Search Console API במקום את Drive API.
  2. מעתיקים את הבקשה לדוגמה בסוף המסמך של ה-OAUth המקושרים למעלה, ומחליפים אותו

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

  3. מחליפים את הגוף של הפונקציה test_api_request() בשפת Python בקוד הבא:

    @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. בבדיקה שלנו היינו צריכים להגדיר באופן ידני את OAUTHLIB_INSECURE_TRANSPORT ל-1 בסביבת Bash: export OAUTHLIB_INSECURE_TRANSPORT=1. אם מופיעות שגיאות לגבי HTTPS שנדרש להפעלת האפליקציה לדוגמה, נסו להגדיר את המשתנה הזה.