Bắt đầu nhanh: Chạy ứng dụng Search Console bằng Python

Ứng dụng web mẫu này sẽ in danh sách các trang web mà bạn có thể truy cập và sơ đồ trang web (nếu có) cho từng trang web đó.

Yêu cầu

Để chạy chương trình này, bạn cần có:

  • Truy cập vào Internet và trình duyệt web để cấp quyền cho ứng dụng mẫu.
  • Tài khoản Google có ít nhất một trang web đã xác minh trong Google Search Console.
  • Python 3 và khung ứng dụng web flask.

Hướng dẫn

Đối với mẫu này, bạn sẽ điều chỉnh ứng dụng mẫu OAuth 2.0 cho Ứng dụng máy chủ web. Ứng dụng python mẫu này sử dụng khung ứng dụng web của bình để chạy một ứng dụng dựa trên nền tảng web quản lý các khoá OAuth và gọi Google Cloud API. Bạn sẽ điều chỉnh mẫu được liên kết để gọi API Search Console và in kết quả ra trên một trang web.

Hãy làm theo hướng dẫn thiết lập trên trang mẫu OAuth được liên kết ở trên rồi sao chép mã mẫu, sau đó sửa đổi mã như minh hoạ dưới đây. Cụ thể, hãy làm theo hướng dẫn thiết lập cho môi trường lập trình của bạn, thiết lập (hoặc sử dụng lại) một dự án có thể truy cập vào API Search Console trong bảng điều khiển Google Cloud, và tạo thông tin xác thực cho một ứng dụng web.

Bạn sẽ sử dụng Ví dụ về mã hoàn chỉnh cho Python làm mã nguồn cho mẫu này.

Hãy đọc phần Sửa đổi ở bên dưới để xem những thay đổi bạn cần thực hiện đối với hướng dẫn được liên kết.

Nếu cần truy cập vào Ứng dụng Python API của Google từ một dự án Google App Engine, bạn sẽ phải sử dụng tài khoản dịch vụ để quản lý các quyền của mình.

Sửa đổi

Khi làm theo hướng dẫn trên trang mẫu Oauth2 được liên kết, hãy thực hiện những thay đổi sau:

  1. Bật API Google Search Console thay vì API Drive.
  2. Sao chép ứng dụng mẫu ở cuối tài liệu OAUth được liên kết ở trên và thay thế đoạn mã này

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

  3. Thay thế phần nội dung của hàm test_api_request() trong ngôn ngữ Python bằng mã sau:

    @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. Trong quá trình thử nghiệm, chúng tôi cần đặt OAUTHLIB_INSECURE_TRANSPORT thành 1 trong môi trường Bash: export OAUTHLIB_INSECURE_TRANSPORT=1. Nếu bạn gặp lỗi về yêu cầu giao thức HTTPS để chạy ứng dụng mẫu, hãy thử đặt biến đó.