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

Ứng dụng web mẫu này in danh sách 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ó:

  • Quyền 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 đã được 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 bình thường để chạy một ứng dụng dựa trên web quản lý các khoá OAuth và gọi một API Google Cloud. Bạn sẽ điều chỉnh mẫu được liên kết để gọi API Search Console và in kết quả trên một trang web.

Làm theo hướng dẫn thiết lập trên trang mẫu OAuth được liên kết ở trên và sao chép mã mẫu, sau đó sửa đổi mã như hiển thị bên dưới. Cụ thể, hãy làm theo hướng dẫn thiết lập cho môi trường lập trình, thiết lập (hoặc sử dụng lại) một dự án có thể truy cập vào Search Console API 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ẽ cần sử dụng tài khoản dịch vụ để quản lý 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 các thay đổi sau:

  1. Bật API Google Search Console thay vì API Drive.
  2. Sao chép đơn đăng ký mẫu ở cuối tài liệu OAUth được liên kết ở trên rồi thay thế

    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 ngôn ngữ Python test_api_request() 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 kiểm thử, chúng tôi cần đặt giá trị OAUTHLIB_INSECURE_TRANSABLE theo cách thủ công thành 1 trong môi trường Bash: export OAUTHLIB_INSECURE_TRANSPORT=1. Nếu bạn gặp lỗi về HTTPS cần thiết để chạy ứng dụng mẫu, hãy thử đặt biến đó.