facebook: permanente Page Access Token?


193

Trabalho em um projeto que possui páginas do facebook como uma de suas fontes de dados. Ele importa alguns dados periodicamente, sem a GUI envolvida. Em seguida, usamos um aplicativo da web para mostrar os dados que já temos.

Nem todas as informações são públicas. Isso significa que eu tenho que ter acesso aos dados uma vez e depois mantê-los. No entanto, não conheço o processo e ainda não encontrei um bom tutorial sobre isso. Eu acho que preciso de um access_token, como posso obtê-lo do usuário, passo a passo? O usuário é administrador de uma página do facebook, ele precisará adicionar algum aplicativo FB nosso à página?

EDIT: Obrigado @phwd pela dica. Fiz um tutorial sobre como obter um token de acesso permanente à página, mesmo que offline_accessnão exista mais.

EDIT: Acabei de descobrir que é respondido aqui: Token de acesso FB de longa duração para o servidor obter informações da página do FB



Parece que sim. Eu tenho um título melhor, ele tem uma pergunta mais detalhada e nós dois temos aproximadamente a mesma resposta aceita.
Vlasec 10/10

Respostas:


638

Seguindo as instruções descritas na documentação de tokens de página extensível do Facebook, consegui obter um token de acesso à página que não expira.

Sugiro usar o Graph API Explorer para todas essas etapas, exceto onde indicado de outra forma.

0. Crie um aplicativo do Facebook

Se você já possui um aplicativo , pule para a etapa 1.

  1. Vá para Meus aplicativos .
  2. Clique em "+ Adicionar um novo aplicativo".
  3. Configure um aplicativo de site.

Você não precisa alterar suas permissões nem nada. Você só precisa de um aplicativo que não desapareça antes de concluir seu token de acesso.

1. Obter token de acesso de curta duração do usuário

  1. Vá para o Graph API Explorer .
  2. Selecione o aplicativo para o qual você deseja obter o token de acesso (no menu suspenso "Aplicativo", não no menu "Meus aplicativos").
  3. Clique em "Obter token"> "Obter token de acesso do usuário".
  4. No pop-up, na guia "Permissões estendidas", marque "manage_pages".
  5. Clique em "Obter acesso token".
  6. Conceda acesso a partir de uma conta do Facebook que tenha acesso para gerenciar a página de destino. Observe que, se esse usuário perder o acesso ao token final, o acesso sem validade provavelmente parará de funcionar.

O token que aparece no campo "Token de acesso" é o seu token de acesso de curta duração.

2. Gere token de acesso de longa duração

Seguindo estas instruções dos documentos do Facebook, faça uma solicitação GET para

https://graph.facebook.com/v2.10/oauth/access_token?grant_type=fb_exchange_token&client_id= {app_id} & client_secret = {app_secret} & fb_exchange_token = {short_lived_token}

digitando o ID e o segredo do seu aplicativo e o token de curta duração gerado na etapa anterior.

Você não pode usar o Graph API Explorer . Por alguma razão, ele fica preso a essa solicitação. Eu acho que é porque a resposta não é JSON, mas uma string de consulta. Como é uma solicitação GET, você pode simplesmente acessar o URL no seu navegador.

A resposta deve ser assim:

{"access_token": " ABC123 ", "token_type": "portador", "expires_in": 5183791}

"ABC123" será seu token de acesso de longa duração. Você pode colocá-lo no depurador do token de acesso para verificar. Em "Expira", deve ter algo como "2 meses".

3. Obter ID do usuário

Usando o token de acesso de longa duração, faça uma solicitação GET para

https://graph.facebook.com/v2.10/me?access_token= {long_lived_access_token}

O idcampo é o ID da sua conta. Você precisará dele para o próximo passo.

4. Obter token de acesso à página permanente

Faça uma solicitação GET para

https://graph.facebook.com/v2.10/ {account_id} / accounts? access_token = {long_lived_access_token}

A resposta JSON deve ter um datacampo no qual há uma matriz de itens aos quais o usuário tem acesso. Localize o item da página da qual você deseja o token de acesso permanente. O access_tokencampo deve ter seu token de acesso permanente. Copie-o e teste-o no Depurador de Tokens de Acesso . Em "Expira", deve dizer "Nunca".


14
O Facebook estragou tudo para não funcionar mais. :-( Após a etapa 1.5 acima (clicando no botão "Obter acesso token"), um aviso vermelho é exibido na caixa de diálogo a seguir, indicando "Enviar para revisão de login - Algumas das permissões abaixo não foram aprovadas para uso pelo Facebook" e também um o cadeado com o texto "Isso não permite que o aplicativo seja postado no Facebook" aparece ao mesmo tempo abaixo. Portanto, uma nova etapa deve ser inserida entre as etapas 1.5 e 1.6 acima, lendo "Faça muita besteira com seu aplicativo, em seguida, submetê-lo para revisão, então orar e esperar ":-( Alguém sabe uma maneira de contornar isso para um aplicativo de teste puro.?
QuestionOverflow

10
Para quem chega à última etapa e o navegador simplesmente retorna: message: "(#100) Tried accessing nonexisting field (accounts) on node type (Page)", type: "OAuthException", code: 100 vá para o FB Access Token Debugger e teste seu long_lived_access_token. Consistentemente eu vi que depois de alguns minutos, se você voltar e verificar novamente o long_lived_access_token o FB acesso token Debugger, então, indicam que esse símbolo é permanente (expirar: never)
AdjunctProfessorFalcon

14
Eu juro, se eu não tivesse lido esta resposta, ainda estaria batendo minha cabeça na parede com uma ficha de vida curta ... Pena que a última parte não está funcionando ... Estou recebendo o (#100) Tried accessing nonexisting field (accounts) on node type (Page)erro .. incapaz de prosseguir com a etapa 5 ... Ainda assim, obrigado ... LE: confira a última parte da resposta fornecida pelo @Vlasec. Você pode obter o token de acesso permanente consultando / {pageId}? Fields = access_token & access_token = {long_lived_access_token} para corrigir o problema.
Mujnoi Gyula Tamas 27/10/2015

15
Tive que usar isso para o passo final para obter o meu acesso permanente token como ele diz que "contas" não existe, mesmo para v2.7:https://graph.facebook.com/v2.7/{page_id}?fields=access_token&access_token={long_lived_access_token}
Reado

5
Na última etapa, estou recebendo a seguinte exceção {"error": {"message": "Syntax error \" Fim esperado da string em vez de \ "? \". \ "No caractere 11: access_toke \ u200c \ u200bn" , "type": "OAuthException", "code": 2500, "fbtrace_id": "A8 + gtSaShIO"}} Alguém sabe como resolvê-lo ????
Lucy

89

Aqui está minha solução usando apenas o Graph API Explorer e o Access Token Debugger :

  1. Gráfico API Explorer:
    • Selecione seu aplicativo no menu suspenso superior direito
    • Selecione "Obter token de acesso do usuário" na lista suspensa (campo do token de direito de acesso) e selecione as permissões necessárias
    • Copiar token de acesso do usuário
  2. Depurador de token de acesso:
    • Cole o token copiado e pressione "Debug"
    • Pressione "Estender token de acesso" e copie o token de acesso de usuário de longa duração gerado
  3. Gráfico API Explorer:
    • Cole o token copiado no campo "Token de acesso"
    • Faça uma solicitação GET com "PAGE_ID? Fields = access_token"
    • Localize o token de acesso à página permanente na resposta (nó "access_token")
  4. (Opcional) Depurador de token de acesso:
    • Cole o token permanente e pressione "Debug"
    • "Expira" deve ser "Nunca"

(Testado com a API versão 2.9-2.11, 3.0-3.1)


3
Não há botão "Estender token de acesso" para pressionar. Talvez eles tenham tirado.
Cesar Bielich

4
Eu vejo o botão "Estender"
Eduardo

2
Após estender o token de acesso (etapa 2) e depurá-lo novamente, ele nunca deve expirar. Você pode apenas passar os passos 3 e 4.
daniel_serretti

1
Obrigado por esta resposta muito mais fácil de entender do que a grande acima. Foi realmente útil.
Paul Laffitte

2
Oh, cara, você está pegando fogo! Muito obrigado! Perdi tanto tempo para encontrar essa opção, porque não consegui depurar um aplicativo corretamente!
Killuminati

11

Além das etapas recomendadas na resposta do Vlasec , você pode usar:

  • Graph API Explorer para fazer as consultas, por exemplo/{pageId}?fields=access_token&access_token=THE_ACCESS_TOKEN_PROVIDED_BY_GRAPH_EXPLORER
  • Acesse o Token Debugger para obter informações sobre o token de acesso.

3
Isso não funciona mais. O token dura apenas uma hora
flashsnake

@flashsnake você realmente testou isso na v2.8? os shows depurador token expirar Nunca
Bizmate

Não me lembro. Eu posso ter testado.
flashsnake

11

Eu criei um script PHP para facilitar. Crie um aplicativo . No Graph API Explorer, selecione seu aplicativo e obtenha um token de usuário com a permissão manage_pages e publish_pages. Encontre o ID da sua página na parte inferior da página Sobre. Preencha os vars de configuração e execute o script.

<?php
$args=[
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
];

echo generate_token($args);

function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/{$userid}/accounts?access_token={$longtoken}")); // get permanent token
    foreach($r->data as $d) if($d->id==$args['pageid']) return $d->access_token;
}

1
+1 Apenas tentei e, entre todas essas respostas parcialmente depreciativas, ele faz maravilhas! Eu gosto desta resposta porque modificações futuras são fáceis com uma pequena edição aqui e ali.
Siddhant Rimal

Desculpe, eu não tinha permissão para editar esta resposta. Portanto, para a Graph API 2.9, escrevi outra resposta .
Siddhant Rimal

Parece que eles mudaram coisas com 2,9 porque nenhum desses exemplos funcionam mais
Cesar Bielich

10

Outra resposta do PHP para facilitar a vida. Atualizado para a API Graph do Facebook 2.9 . Apenas preencha e carregue.

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$userid}?fields=access_token&access_token={$longtoken}")); // get permanent token
    if($r->id==$args['pageid']) $finaltoken=$r->access_token;
    return $finaltoken;
}
?>

Adendo: (alternativa)

No Gráfico 2.9, você pode pular grande parte do aborrecimento de obter um token de acesso longo clicando em Estender token de acesso na parte inferior da ferramenta Depurador de token de acesso , depois de depurar um token de acesso curto. Armado com informações sobre pageide longlivedtoken, execute o php abaixo para obter um token de acesso permanente.

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'longlivedtoken'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$args['pageid']}?fields=access_token&access_token={$args['longlivedtoken']}"));
return $r->access_token;
}
?>

Embora o segundo código poupe bastante aborrecimento, eu recomendo executar o primeiro código php, a menos que você esteja com muita pressa, porque faz uma verificação cruzada do pageid e do userid. O segundo código não funcionará se você escolher o token do usuário por engano.

Graças a dw1 e Rob


O botão Estender token de acesso não está lá, estou faltando alguma coisa?
Cesar Bielich

@CesarBielich: Você deve primeiro depurar um token de acesso curto. Aparece abaixo dos resultados quando você depura um token de aplicativo curto. Como você não pode vê-lo, você deve ter depurado um token de acesso do usuário. Observe que esta resposta não se aplica ao uso do token de acesso; somente o token de acesso ao aplicativo pode ser usado. Os tokens de acesso do usuário não podem ser permanentes. Eles podem ser gerados até tokens longos.
Siddhant Rimal

1
@CesarBielich Acho que você está confundindo algo aqui. Você pode criar tokens de acesso para usuários, aplicativos e páginas. Você precisa escolher um aplicativo que criou, em vez de Graph API Explorerno campo Aplicativo antes de poder solicitar um token.
Siddhant Rimal

@CesarBielich: Use o primeiro método se o segundo for muito confuso para você. Você basta preencher os campos de entrada na primeira e tudo acontece automaticamente :)
Siddhant Rimal

Desculpe, eu estava comentando sobre um post diferente que eu fiz ontem à noite lol. Sim, por algum motivo, não consegui que o seu funcionasse e me tornasse um token que nunca expiraria. Eu tive que remover a v2.9segunda chamada e isso funcionou para mim. Wierd
Cesar Bielich

6

Tentei estas etapas: https://developers.facebook.com/docs/marketing-api/access#graph-api-explorer

Obter token de acesso à página permanente

  • Vá para o Graph API Explorer
  • Selecione seu aplicativo em Aplicativo
  • Cole o token de acesso de longa duração no token de acesso
  • Ao lado de Token de acesso , escolha a página para a qual deseja um token de acesso. O token de acesso aparece como uma nova sequência.
  • Clique em i para ver as propriedades desse token de acesso
  • Clique no botão “Abrir no Access Token Tool” novamente para abrir a ferramenta “Access Token Debugger” para verificar as propriedades

Uma dica, só funcionou para mim quando o idioma da página é o inglês .


1
ESSE CARA!!! 5 cervejas virtuais. Isso funciona substituindo a etapa 5 da resposta aprovada. graph version 2.8
Root -

1
Eu perdi semanas em poder usar a API do Facebook. Até hoje, é o token mais confuso e inconsistente que já encontrei. Esta solução ainda funciona perfeitamente .. Outubro, 2017
user919426 14/10

4

Se você estiver solicitando apenas dados da página, poderá usar um token de acesso à página. Você precisará autorizar o usuário apenas uma vez para obter o token de acesso do usuário; estenda a validade para dois meses e solicite o token para a página. Isso tudo é explicado no cenário 5 . Observe que o token de acesso à página adquirido é válido apenas enquanto o token de acesso do usuário for válido.


Desculpe, talvez eu não tenha sido claro o suficiente. Eu li sobre tokens, só preciso aprender como pedir permissão ao usuário e transferir um token para o meu aplicativo. Parece que eu preciso criar algum "aplicativo" do Facebook que tenha como único objetivo solicitar permissões, certo?
Vlasec

1
@Viasec Corrija a única maneira de obter um token de acesso é através de uma aplicação como explicado aqui developers.facebook.com/docs/facebook-login
phwd

Obrigado, devo ter desconsiderado de alguma forma, presumi que estivesse em algum lugar da seção APIs, o que estava errado. Vou olhar para isso, espero que responda à minha pergunta.
Vlasec

4

Ao obter o token de acesso permanente, eu segui acima de 5 etapas, como o Donut mencionou. No entanto, na quinta etapa, ao gerar o token de acesso permanente, ele retorna o token de acesso de longa duração (válido por 2 meses) e o token de acesso permanente (que nunca expira). o que notei é que a versão atual da API do Graph é a V2.5. Se você está tentando obter o token de acesso permanente com a V2.5, está dando um token de acesso de longa duração.Tente fazer uma chamada de API com a V2.2 (se você não conseguir alterar a versão no api explorer gráfico, pressione a chamada de API https: //graph.facebook.com/v2.2/ {account_id} / accounts? access_token = {long_lived_access_token} na nova guia da V2.2), então você receberá o token de acesso permanente (que nunca expira)


Voltar às versões da API para obter resultados só resultará em mais trabalho no futuro que encontrei, principalmente porque a versão da API expira após um certo tempo.
SlickRemix 17/09/16

retorna null :( Como obtemos o token de acesso à página? #
Nancy thakkar 15/16/16

3

Além dos métodos mencionados, vale ressaltar que, para aplicativos servidor a servidor, você também pode usar este formulário de token de acesso permanente: app_id | app_secret Esse tipo de token de acesso é chamado de App Token. Geralmente, ele pode ser usado para chamar a API do Graph e consultar nós públicos no back-end do aplicativo. É mencionado aqui: https://developers.facebook.com/docs/facebook-login/access-tokens


1
Permite algum tipo de acesso a páginas? Eu acho que não e, nesse caso, realmente não responde à pergunta.
Vlasec

@Vlasec Permite que você acesse comentários em um post público
Ali Gajani 02/02

1
Embora isso possa ser suficiente para alguns, não responde à pergunta.
Vlasec

2

Graças a @donut, consegui obter o token de acesso que nunca expira em JavaScript.

// Initialize exchange
fetch('https://graph.facebook.com/v3.2/oauth/access_token?grant_type=fb_exchange_token&client_id={client_id}&client_secret={client_secret}&fb_exchange_token={short_lived_token}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Get the user data
    fetch(`https://graph.facebook.com/v3.2/me?access_token=${json.access_token}`)
    .then((data) => {
        return data.json();
    })
    .then((userData) => {
        // Get the page token
        fetch(`https://graph.facebook.com/v3.2/${userData.id}/accounts?access_token=${json.access_token}`)
        .then((data) => {
            return data.json();
        })
        .then((pageToken) => {
            // Save the access token somewhere
            // You'll need it at later point
        })
        .catch((err) => console.error(err))
    })
    .catch((err) => console.error(err))
})
.catch((err) => {
    console.error(err);
})

e então eu usei o token de acesso salvo assim

fetch('https://graph.facebook.com/v3.2/{page_id}?fields=fan_count&access_token={token_from_the_data_array}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Do stuff
})
.catch((err) => console.error(err))

Espero que alguém possa aparar esse código porque é meio confuso, mas foi a única maneira que eu consegui pensar.


2

Se você possui o aplicativo do facebook, pode tentar com o id do aplicativo e o segredo do aplicativo.

Gostar :

access_token={your-app_id}|{your-app_secret}

não será necessário alterar o token com frequência.


1

Limite de solicitação de aplicativo atingido (nº 4) - API do FB v2.1 e superior

Essa resposta me levou à "resposta definitiva para nós" e, por isso, está muito relacionada, então estou anexando-a aqui. Embora esteja relacionado ao exposto acima, é diferente e parece que o FB simplificou o processo.

Nossas contagens de compartilhamento em nosso site pararam de funcionar quando o FB passou a API para a v 2.1. No nosso caso, já tínhamos um aplicativo FB e NÃO estávamos usando o login do FB. Então, o que precisávamos era obter um FB APP Token para fazer os novos pedidos. A partir de 23 de agosto de 2016.

  1. Acesse: https://developers.facebook.com/tools/explorer
  2. Selecione a versão da API e, em seguida, use GET e cole o seguinte:

    /oauth/access_token?client_id={app-id}&client_secret={app-secret}&grant_type=client_credentials
    

    Você vai querer pegar seu ID do aplicativo e seu segredo na sua página do aplicativo. Página principal do desenvolvedor do FB Apps

  3. Execute a consulta do gráfico e você verá:

    {
       "access_token": "app-id|app-token",
       "token_type": "bearer"
    }
    

    Onde

    "id do aplicativo"
    e
    "token de aplicativo"
    será o ID do aplicativo na página do aplicativo FB e o Hash do aplicativo FB gerado que você acabou de receber.

  4. Em seguida, teste seu novo token de acesso à APP: testador do FB Access Token

  5. Você deve ver, colando o

    "token de aplicativo"
    no testador de token, um único token baseado em aplicativo sem data / hora de vencimento.

No nosso caso, estamos usando o FB js sdk, então alteramos nossa chamada para ser assim (observe que APENAS obtém a contagem de compartilhamentos e não a contagem de compartilhamentos e comentários combinada como costumava ser) :

FB.api(
    '/','GET',{
    // this is our FB app token for our FB app 
        access_token: FBAppToken,
        "id":"{$shareUrl}","fields":"id,og_object{ engagement }"
}

Agora está funcionando corretamente. Foram necessárias muitas pesquisas e um relatório oficial de erros com o FB para confirmar que precisamos começar a fazer solicitações tokenizadas à API do FB. Além disso, solicitei que eles (FB) adicionassem uma pista ao código de erro (nº 4) que menciona a solicitação tokenizada.

Acabei de receber outro relatório de um de nossos desenvolvedores de que nossa contagem de comentários do FB também está quebrada devido à nova necessidade de solicitações tokenizadas, portanto atualizarei isso de acordo.


1
Sempre foi o usuário do aplicativo que fez o login e permitiu o acesso ao aplicativo. De qualquer forma, isso não parece criar um token de acesso à página, então acho que não é uma resposta válida para a pergunta. Interessante embora - talvez faça um Q / A de sua preferência?
Vlasec 02/02

1

Muitos desses exemplos não funcionam, não tenho certeza se é por causa de 2.9v saindo, mas eu estava batendo minha cabeça. De qualquer forma, peguei a versão @ dw1 e a modifiquei um pouco com a ajuda do vídeo do @KFunk e consegui isso trabalhando para mim na versão 2.9. Espero que isto ajude.

$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r = json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/{$args['pageid']}?fields=access_token&access_token={$longtoken}")); // get user id
    $finaltoken=$r->access_token;
    return $finaltoken;
}

Bom trecho, mas esta questão não é sobre como fazê-lo em PHP, mas sobre como usar a própria API, que também pode ser feita em Java ou .NET. Por exemplo, eu precisava fazer isso em Java. Pseudocódigo ou guia passo a passo seria mais útil para quem não usa PHP.
Vlasec

2
@Vlasec Eu diria que esse trecho de código PHP é muito próximo a qualquer pseudo código e é muito fácil de entender. Casar está apenas usando algumas APIs que já são fornecidas pelo facebook. O restante do material é auto-explicativo.
Siddhant Rimal

0

Em abril de 2020, meus tokens de página anteriormente permanentes começaram a expirar entre 1 e 12 horas. Comecei a usar tokens de usuário com a manage_pagespermissão para atingir o objetivo anterior (pesquisar os eventos de uma página). Esses tokens parecem ser permanentes.

Criei um script python com base nas informações encontradas nesta postagem, hospedadas em github.com/k-funk/facebook_permanent_token , para acompanhar quais parâmetros são necessários e quais métodos de obtenção de um token permanente estão funcionando.


-1

Encontrei esta resposta que se refere a esta ferramenta que realmente ajudou muito.

Espero que esta resposta ainda seja válida quando você ler isso.


ESTÁ BEM. A resposta por rosquinha ainda funciona ou precisa de algum passo extra?
Vlasec
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.