Diese Beispiel-Web-App gibt die Liste der Websites, auf die du zugreifen kannst, und gegebenenfalls die Sitemaps für jede dieser Websites aus.
Voraussetzungen
Zum Ausführen dieses Programms benötigen Sie Folgendes:
- Zugriff auf das Internet und einen Webbrowser zum Autorisieren der Beispiel-App.
- Ein Google-Konto mit mindestens einer Website, die in der Google Search Console bestätigt wurde.
- Python 3 und das flask-Framework für Webanwendungen
Anleitung
In diesem Beispiel passen Sie die Beispielanwendung OAuth 2.0 für Webserveranwendungen an. Diese Python-Beispielanwendung verwendet das flask-Webanwendungs-Framework, um eine webbasierte Anwendung auszuführen, die OAuth-Schlüssel verwaltet und eine Google Cloud API aufruft. Dazu passen Sie das verlinkte Beispiel so an, dass die Search Console API aufgerufen und die Ergebnisse auf einer Webseite ausgegeben werden.
Folgen Sie der Einrichtungsanleitung auf der oben verlinkten OAuth-Beispielseite, kopieren Sie den Beispielcode und ändern Sie ihn dann wie unten gezeigt. Folgen Sie insbesondere der Anleitung für Ihre Programmierumgebung, richten Sie ein Projekt ein, das in der Google Cloud Console auf die Search Console API zugreifen kann, und generieren Sie Anmeldedaten für eine Webanwendung.
Sie verwenden das vollständige Codebeispiel für Python als Quellcode für dieses Beispiel.
Im Abschnitt Änderungen unten erfahren Sie, welche Änderungen Sie an den verlinkten Anleitungen vornehmen müssen.
Wenn Sie von einem Google App Engine-Projekt aus auf den Google API Python-Client zugreifen müssen, benötigen Sie ein Dienstkonto, um Ihre Berechtigungen zu verwalten.
Änderungen
Wenn Sie der Anleitung auf der verlinkten Oauth2-Beispielseite folgen, nehmen Sie folgende Änderungen vor:
- Die Google Search Console API statt der Drive API aktivieren
Kopieren Sie die Beispielanwendung am Ende des oben verlinkten Dokuments für die nicht aktiven Nutzer und ersetzen Sie
SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly'] API_SERVICE_NAME = 'drive' API_VERSION = 'v2'
durch Folgendes:SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly'] API_SERVICE_NAME = 'searchconsole' API_VERSION = 'v1'
Ersetzen Sie den Text der Funktion
test_api_request()
in der Python-Sprache durch den folgenden Code:@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
In unseren Tests mussten wir OAUTHLIB_INSECURE_TRANSPORT in der Bash-Umgebung
export OAUTHLIB_INSECURE_TRANSPORT=1
manuell auf 1 setzen. Wenn Sie Fehlermeldungen bezüglich HTTPS erhalten, das zum Ausführen der Beispielanwendung erforderlich ist, legen Sie diese Variable fest.