Exemplo utilizando PHP 5.2
Antes de Começar
Certifique-se de que você tem todos os dados descritos aqui antes de seguir o tutorial.
Dependências
Para conectar no Login Cidadão usando PHP 5.2
utilizamos o cliente OAuth disponibilizado pelo site PHPCLASSES.
Essa implementação tem como dependência a classe http-client
também disponível pelo site PHPCLASSES.
Começando
Arquivo de configuração
Primeiramente criamos um arquivo de configuração oauth_configuration.json
referente ao servidor OAuth que desejamos utilizar. Nesse arquivo, especificamos a versão do protocolo OAuth, o endereço para fazer a autenticação, com marcadores para fazer substituições de variáveis, e o endereço para obter o Access Token:
// oauth_configuration.json { "servers": { // ATENÇÃO: Você deverá informar esse nome na próxima etapa, em $client->server "Meu": { "oauth_version": "2.0", "dialog_url": "https://meu.rs.gov.br/oauth/v2/auth?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&state={STATE}&scope={SCOPE}", "access_token_url": "https://meu.rs.gov.br/oauth/v2/token" } } }
Configurando o Client OAuth
Primeiro instanciamos a classe oauth_client_class
:
$client = new oauth_client_class(); //aqui especificamos o nome do servidor que vamos utilizar. Isso carregar as configurações extras do cliente OAuth $client->server = 'Meu'; //colocamos um dos nossos endereços que autorizamos o Login Cidadão a retornar dados $client->redirect_uri = ''; //colocamos nossa chave pública aqui $client->client_id = ''; //colocamos nossa chave privada aqui $client->client_secret = ''; //colocamos a lista de escopos desejados *separados por espaços* $client->scope = '';
Por padrão, o arquivo de configuração deve ser colocado no mesmo diretório que o nosso script está rodando, todavia é possível mudar esse diretório através do seguinte atributo:
$client->configuration_file='';
Fazendo a mágica acontecer
Com os dados preenchidos, podemos inicializar a instância:
// aqui a classe vai carregar as informações extras do servidor if (($success = $client->Initialize())) { // aqui ele vai processar os dados do $_REQUEST para descobrir se precisa realizar a autorização no gerenciador de identidades e/ou solicitar um Access Token if (($success = $client->Process())) { if (strlen($client->authorization_error)) { $client->error = $client->authorization_error; $success = false; } elseif (strlen($client->access_token)) { // quando conseguimos o Access Token podemos pegar os dados $success = $client->CallAPI('https://meu.rs.gov.br/api/v1/person', 'GET', array(), array( 'FailOnAccessError' => true ), $user); } } // aqui ele retorna o status das operações realizadas pela instância $success = $client->Finalize($success); } // caso a classe precise encerrar a execução desta pagina como, por exemplo, quando o gerenciador de identidades retorna dados para essa pagina, apos solicitar a autorização if ($client->exit) { exit(); }
Uma vez obtido o Access Token podemos pegar os dados do usuário através da variável $user
que estará populada com as informações solicitadas na propriedade scope
.