Este exemplo de app da Web imprime a lista de sites que você pode acessar, além dos sitemaps, se houver, para cada um desses sites.
Requisitos
Para executar este programa, você vai precisar de:
- Acesso à Internet e a um navegador da Web para autorizar o app de exemplo.
- Uma Conta do Google com pelo menos um site verificado no Google Search Console.
- Python 3 e o framework de aplicativos da Web flask.
Instruções
Para este exemplo, você vai adaptar o exemplo de aplicativo OAuth 2.0 para aplicativos de servidor da Web. Este aplicativo em Python de exemplo usa o framework de aplicativo da Web flask para executar uma um aplicativo baseado na Web que gerencia chaves OAuth e chama uma API do Google Cloud. Você adaptará o exemplo vinculado para chamar a API Search Console e imprimir o resultados em uma página da Web.
Siga as instruções de configuração na página de amostra do OAuth vinculada acima e copie o e modifique o código conforme mostrado abaixo. Especificamente, siga as instruções de configuração para seu ambiente de programação, configuração (ou reutilização) de um projeto com acesso à API Search Console no console do Google Cloud e gerar credenciais para um aplicativo da Web.
Use o exemplo de código completo para Python como o código-fonte para esta amostra.
Leia Modificações abaixo para saber quais mudanças você precisa fazer nos links instruções.
Se você precisar acessar o cliente Python da API do Google em uma instância do Google App Engine projeto, será preciso usar uma conta de serviço para gerenciar suas permissões.
Modificações
Ao seguir as instruções na página de amostra do OAuth2 vinculada, faça o as seguintes mudanças:
- Ative a API Google Search Console em vez da API Drive.
Copie o exemplo de aplicativo no final do documento OAUth vinculado acima. e substitua este
SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly'] API_SERVICE_NAME = 'drive' API_VERSION = 'v2'
Por este código:SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly'] API_SERVICE_NAME = 'searchconsole' API_VERSION = 'v1'
Substituir o corpo da linguagem Python
test_api_request()
com o seguinte código:@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
Em nossos testes, foi necessário definir manualmente OAUTHLIB_INSECURE_TRANSPORT como 1 no ambiente Bash:
export OAUTHLIB_INSECURE_TRANSPORT=1
. Se você receber erros sobre o HTTPS necessário para executar o app de exemplo, tente configurar essa variável.