Neste artigo, veja como gerar o auth_code e o token_code, necessários para a utilização das macros sc_api_upload e sc_api_download.
Estas chaves devem ser geradas individualmente, siga os passos abaixo para gerá-los sem erro.

Para a utilização das macros de upload e download com o google driver, é necessário habilitar a api do google drive em sua conta google.
Gerar auth_code com a macro sc_api_gc_get_url
A macro sc_api_gc_get_url gera uma URL para a autenticação do usuário da conta google utilizada para configuração da API.
Ela possui dois parâmetros:
- app_name - Recebe o app_name, disponível na configuração da sua api. Este parâmetro aceita strings ou variável.
- json_oauth - Recebe o conteúdo do arquivo json, este arquivo está disponível para download nas configurações da sua api. Este parâmetro aceita strings ou variável
Siga os passos abaixo.
- Crie uma aplicação do tipo blank em seu projeto, com o objetivo de obter o auth_code.
- No evento onExecute, adicione o código abaixo.
Os valores atribuídos as variáveis $app_name e $json_oauth, no exemplo abaixo, são apenas para ilustração devendo ser alterado pelos dados de sua conta.
Exemplo do código
- // $app_name deve receber o nome do aplicativo configurado em sua conta google
- $app_name = 'scriptcase';
- // $json_oauth deve receber o conteúdo do arquivo json disponível para download nas configurações do seu aplicativo do google.
- $json_oauth = '{"installed":{"client_id":"238650139811-eqrje3lqhj9a404iuduh9l5kvk5i13ng.apps.googleusercontent.com","project_id":"sample-294791","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x519_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"E-Z_t8PU-8u0BFwumHRorbTl","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}}';
- // Gera o link para autenticação da conta
- $url = sc_api_gc_get_url($app_name, $json_oauth);
- // Redireciona a app para o link gerado pela macro
- sc_redir($url);
Autenticação do Google
3. Em seguida, execute a aplicação.
Será solicitada a realização do login, com a conta utilizada para a configuração da API.
- Após o login será solicitada a permissão de acesso:
- Em seguida, o código será gerado.
Armazene o código em um arquivo txt, ele será necessário para gerarmos o token_code.
Possíveis erros
Este erro ocorre quando o valor informado no parâmetro json_oauth está errado.
Abra o arquivo json novamente, copie todo o conteúdo do arquivo, ele de ser informado por completo.
Gerar token_code com a macro sc_api_gc_get_obj
A macro sc_api_gc_get_obj gera o token_code.
Ela possui quatro parâmetros:
- app_name - Recebe o app_name, disponível na configuração da sua api. Este parâmetro aceita strings ou variável.
- json_oauth - Recebe o conteúdo do arquivo json, este arquivo está disponível para download nas configurações da sua API. Este parâmetro aceita strings ou variável
- auth_code - Recebe o auth_code gerado no passo anterior ou outro auth_code válido que você já tenha gerado.
Siga os passos abaixo.

Este passo a passo deve ser executado apenas para cada auth_code gerado. Caso algum problema ocorra no momento de gerar o token_code, será necessário gerar um novo auth_code.
Na mesma aplicação blank, criada para gerar o auth_code, é possível gerar também o token_code, para isso siga os passos abaixo.
- Comente as linhas destacadas abaixo:
Exemplo do código com as linhas que devem estár comentadas.
-
// $app_name deve receber o nome do aplicativo configurado em sua conta google
-
$app_name = 'scriptcase';
-
// $json_oauth deve receber o conteúdo do arquivo json disponível para download nas configurações do seu aplicativo do google.
-
$json_oauth = '{"installed":{"client_id":"238650139811-eqrje3lqhj9a404iuduh9l5kvk5i13ng.apps.googleusercontent.com","project_id":"sample-294791","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x519_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"E-Z_t8PU-8u0BFwumHRorbTl","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}}';
-
// Gera o link para autenticação da conta
-
// $url = sc_api_gc_get_url($app_name, $json_oauth);
-
// Redireciona a app para o link gerado pela macro
-
// sc_redir($url);
-
Após a linha do sc_redir, que deve está comentada, adicione as linhas abaixo.
Exemplo do código
- // Recebe auth_code gerado no passo anterior
- $auth_code = '4/1AY0e-g4BjstStsxAJd7A5jjlzBifl5AWSS9x04xhwp6Cyh2JON0i3r2oNd4';
- $auth_token = sc_api_gc_get_obj($app_name, $json_oauth, $auth_code);
- echo $auth_token;
Como deve está o código neste momento.
- Em seguida, execute a aplicação. O valor do token_code deve ser exibido na tela.
Armazene o token em um arquivo .txt.
Exemplo do token_code gerado:
- {"access_token":"ya29.a1AfH6SMBSExys1mg0_4aaZ1H8iVNUtZ-2iid4zIjvywOpPDpL5_fhpuYu_Evgqj14Zll1mu0DKeX-UPBBbkIY33T_hIwUKNi6h5GVmE8RSt7vwj1N8rmM_ae3EjOBMDIaS_F2vkZ8ZzpnBA0V38WwYBxBNR1C","expires_in":3599,"refresh_token":"1//0heh4c5k0p_OqCgYIARAAGBESNwF-L2IrTOLtSoBOr-qdK4gDtSkyXtLYh99S1DGG6Y0x6sBwNu2sVnlqEFczG7-zEIBvCd8Bb6Q","scope":"https://www.googleapis.com/auth/drive","token_type":"Bearer","created":1623154166}

A macro sc_api_gc_get_obj deve ser executada apenas uma vez para cada auth_code gerado.
Após obter o token_code, o parâmetro auth_token deve alterado para que um novo token_code seja obtido. Caso contrário, será exibido o erro Fatal error: Uncaught InvalidArgumentException: Invalid token format, descrito abaixo, ao executar a aplicação.
Possíveis erros ao gerar o token_code.
Fatal error: Uncaught InvalidArgumentException: Invalid token format
Este erro ocorre quando a macro sc_api_gc_get_obj é executada pela segunda vez, sem que os valores do auth_code tenha sido alterados.
Neste caso, será necessário gerar um novo auth_code, para obter um novo como visto no início do artigo. Retorne para o passo Gerar auth_code com a macro sc_api_gc_get_url