การเริ่มต้นอย่างรวดเร็ว: เรียกใช้แอป Search Console ใน Python

แอปพลิเคชันเว็บตัวอย่างนี้จะพิมพ์รายการไซต์ที่คุณสามารถเข้าถึงได้ และ Sitemap หากมี สำหรับแต่ละเว็บไซต์

ข้อกำหนด

คุณต้องมีสิ่งต่อไปนี้จึงจะใช้โปรแกรมนี้ได้

  • เข้าถึงอินเทอร์เน็ตและเว็บเบราว์เซอร์เพื่อให้สิทธิ์แอปตัวอย่าง
  • บัญชี Google ที่มีเว็บไซต์อย่างน้อย 1 เว็บไซต์ได้รับการยืนยันใน Google Search Console
  • เฟรมเวิร์กเว็บแอปพลิเคชัน Python 3 และ flask

วิธีการ

สำหรับตัวอย่างนี้ คุณจะปรับเปลี่ยน OAuth 2.0 สำหรับตัวอย่างแอปพลิเคชันเว็บเซิร์ฟเวอร์ แอปพลิเคชัน แอป Python ตัวอย่างนี้ใช้เฟรมเวิร์กเว็บแอปพลิเคชันแบบขวดแก้วทดลองเพื่อเรียกใช้ แอปพลิเคชันบนเว็บที่จัดการคีย์ OAuth และเรียก Google Cloud API คุณ จะปรับตัวอย่างที่ลิงก์ไว้ให้เรียก Search Console API และพิมพ์ ผลลัพธ์ในหน้าเว็บ

ปฏิบัติตามคำแนะนำการตั้งค่าในหน้าตัวอย่างของ OAuth ที่ลิงก์ด้านบน และคัดลอก โค้ดตัวอย่าง จากนั้นให้แก้ไขโค้ดดังที่แสดงด้านล่าง โปรดทำตาม วิธีการตั้งค่าสภาพแวดล้อมการเขียนโค้ด การตั้งค่า (หรือการใช้ซ้ำ) โปรเจ็กต์ ที่เข้าถึง Search Console API ใน Google Cloud Console ได้และการสร้างข้อมูลเข้าสู่ระบบ สำหรับเว็บแอปพลิเคชัน

คุณจะใช้ตัวอย่างโค้ดที่สมบูรณ์ สำหรับ 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. แทนที่เนื้อหาของภาษา Python test_api_request() ด้วยโค้ดต่อไปนี้

    @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 ที่ต้องใช้เพื่อเรียกใช้แอปตัวอย่าง ให้ลองตั้งค่า ตัวแปร