Contoh aplikasi web ini mencetak daftar situs yang dapat Anda akses, dan peta situs, jika ada, untuk setiap situs tersebut.
Persyaratan
Untuk menjalankan program ini, Anda akan memerlukan:
- Akses ke internet dan browser web, untuk mengizinkan aplikasi contoh.
- Akun Google dengan setidaknya satu situs yang diverifikasi di Google Search Console.
- Python 3 dan framework aplikasi web flask.
Petunjuk
Untuk contoh ini, Anda akan menyesuaikan aplikasi contoh OAuth 2.0 untuk Aplikasi Server Web. Contoh aplikasi Python ini menggunakan framework aplikasi web flask untuk menjalankan aplikasi berbasis web yang mengelola kunci OAuth dan memanggil Google Cloud API. Anda akan menyesuaikan contoh tertaut untuk memanggil Search Console API dan mencetak hasilnya di halaman web.
Ikuti petunjuk penyiapan di halaman contoh OAuth yang ditautkan di atas, salin kode contohnya, lalu ubah kodenya seperti yang ditunjukkan di bawah ini. Secara khusus, ikuti petunjuk penyiapan untuk lingkungan coding Anda, menyiapkan (atau menggunakan kembali) project yang dapat mengakses Search Console API di Konsol Google Cloud, dan membuat kredensial untuk aplikasi web.
Anda akan menggunakan Contoh kode lengkap untuk Python sebagai kode sumber untuk contoh ini.
Baca Modifikasi di bawah untuk mengetahui perubahan yang perlu dilakukan pada petunjuk yang ditautkan.
Jika perlu mengakses Klien Python Google API dari project Google App Engine, Anda harus menggunakan akun layanan untuk mengelola izin.
Modifikasi
Saat mengikuti petunjuk di halaman contoh Oauth2 yang tertaut, buat perubahan berikut:
- Aktifkan Google Search Console API, bukan Drive API.
Salin aplikasi contoh di akhir dokumen OAUth yang ditautkan di atas, dan ganti
SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly'] API_SERVICE_NAME = 'drive' API_VERSION = 'v2'
Dengan ini:SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly'] API_SERVICE_NAME = 'searchconsole' API_VERSION = 'v1'
Ganti isi fungsi
test_api_request()
bahasa Python dengan kode berikut:@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
Dalam pengujian, kita perlu menetapkan OAUTHLIB_INSECURE_TRANSPORT secara manual ke 1 di lingkungan Bash:
export OAUTHLIB_INSECURE_TRANSPORT=1
. Jika Anda mendapatkan error tentang HTTPS yang diperlukan untuk menjalankan aplikasi contoh, coba tetapkan variabel tersebut.