• 0
Sign in to follow this  
ricbace

Exemplo_login.php incorreto?

Question

Pessoal, alguém sabe se há algum problema com o exemplo_login.php que está junto com o SDK do php para o mercado livre?

Bom para resumir, já li toda a documentação com sugerido http://developers.mercadolibre.com/pt-br/server-side e https://github.com/mercadolibre/php-sdk/blob/master/README.md
Verifiquei as perguntas no forum, para saber se já não foi respondida. 

Criei minha API, consigo receber meu code pela url...... e estou tentando utilizar o exemplo_login.php para pegar o token,  mudando claro o APP_ID e secretKey ... e também a URL de callback da api .. tudo no arquivo exemplo_login.php.....

Quando o rodo meu script sou redirecionado para a pagina autorização da api do mercadolivre e a API do mercado me redireciona corretamente para a pagina de callback(exemplo_login.php) da api... porém recebo a resposta em branco de token.... como abaixo...... o meu code ainda consigo ve-lo na url..... não sei se há algo que alterar no exemplo_login.php. Eu também alterei o arquivo meli.php como sugerido em outros foruns... no campo CURLOPT_SSL_VERIFYPEER => false. 

Essa é a resposta que recebo do arquivo exemplo_login.php

Array
(
    [access_token] => 
    [expires_in] => 1499110592
    [refresh_token] => 
)

Alguém realmente sabe o que pode ser?  vejo muitas sugestões do pessoal que responde, mas quase sempre é reler a documentação, mas já o fiz várias vezes sem progresso. 

Porque o arquivo exemplo  do sdk não funciona... . :S     

Obrigado

 

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 0

olá ricbace, não vou precisar chamar sua atenção para ler a documentação :) Isto é realmente bom.
É um arquivo de exemplo e foi mal escrito, fora que já é velho e pode ter sofrido alterações no processo. Se for este o caso pode ser reportado aqui no fórum que o pessoal do ML melhora.
A página de autorização só deveria aparecer uma vez na vida. 
Outra coisa: veja se está habilitado no escopo na aplicação da API (https://developers.mercadolivre.com.br/apps/home) o offline access.

Se eu não me engano a resposta que tem o CODE é em branco, e depois você faz um post solicitando o access_token usando o $_GET["code"]

Em vez de usar este exemplo de login eu fazia na mão :]

O meu SDK está assim:

    protected static $API_ROOT_URL = "https://api.mercadolibre.com";
    protected static $AUTH_URL     = "http://auth.mercadolivre.com.br/authorization";
    protected static $OAUTH_URL    = "/oauth/token";

    /**
     * Configuration for CURL
     */
    public static $CURL_OPTS = array(
        CURLOPT_USERAGENT => "MELI-PHP-SDK-1.0.0", 
        CURLOPT_SSL_VERIFYPEER => true,
        CURLOPT_CONNECTTIMEOUT => 10, 
        CURLOPT_RETURNTRANSFER => 1, 
        CURLOPT_TIMEOUT => 60
    );

Edited by rodrigojob

Share this post


Link to post
Share on other sites
  • 0

Eu habilitei o offline access no scope... na vedarde habilitei todas as opções......

Exatamente.... eu redireciono para a pagina de autorização (ela sempre está aparecendo pra mim porque vou no usuário e removo a autorização) ... logo a api redireciona para www.XXXX.com.br/exemplo_login.php... que tem o código abaixo.....

 

Sim eu tentei fazer somente um $_GET["code"] pra pegar o token, mas como não funcionou fui tentar fazer com o arquivo exemplo fornecido no SDK.  (exemplo_login.php)... o que pra minha surpresa também não retornou o token... vi no forum o pessoal com o mesmo problema... mas as alterações que eles sugeriram não mudou nada.... mas parece meio antigo isso... 

O meu SDK eu acrescentei duas linhas que o pessoal falou em outro forum...CURLOPT_SSLVERSION =>3  e modifiquei a CURLOPT_SSL_VERIFYPEER => false
tirei desses foruns... https://groups.google.com/forum/#!category-topic/pt-meli-developers/qMtaWpCS9_Y

https://github.com/mercadolibre/php-sdk/issues/32

O meu SDK está assim... (mudei pra verificar,  igual ao seu rodrigojob, mas mesmo assim obtive o mesmo resultado)

    protected static $API_ROOT_URL = "https://api.mercadolibre.com";
    protected static $OAUTH_URL    = "/oauth/token";
    public static $AUTH_URL = array(
        "MLA" => "https://auth.mercadolibre.com.ar", // Argentina 
        "MLB" => "https://auth.mercadolivre.com.br", // Brasil
        "MCO" => "https://auth.mercadolibre.com.co", // Colombia
        "MCR" => "https://auth.mercadolibre.com.cr", // Costa Rica
        "MEC" => "https://auth.mercadolibre.com.ec", // Ecuador
        "MLC" => "https://auth.mercadolibre.cl", // Chile
        "MLM" => "https://auth.mercadolibre.com.mx", // Mexico
        "MLU" => "https://auth.mercadolibre.com.uy", // Uruguay
        "MLV" => "https://auth.mercadolibre.com.ve", // Venezuela
        "MPA" => "https://auth.mercadolibre.com.pa", // Panama
        "MPE" => "https://auth.mercadolibre.com.pe", // Peru
        "MPT" => "https://auth.mercadolibre.com.pt", // Prtugal
        "MRD" => "https://auth.mercadolibre.com.do"  // Dominicana
    );

    /**
     * Configuration for CURL
     */
    public static $CURL_OPTS = array(
        CURLOPT_USERAGENT => "MELI-PHP-SDK-1.1.0", 
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_CONNECTTIMEOUT => 10, 
        CURLOPT_RETURNTRANSFER => 1, 
        CURLOPT_TIMEOUT => 60,
        CURLOPT_SSLVERSION =>3
    );

 

 

e o exemplo que uso é este....... claro mudei o APP_ID e secretKey ... e também a URL ... não recebo nenhum erro.... mas também não recebo o acess_token..  :S

 

<?php
session_start('teste');
require 'meli.php';
$meli = new Meli('XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXXXXXXXXX', $_SESSION['access_token'], $_SESSION['refresh_token']);
if($_GET['code'] || $_SESSION['access_token']) {
    // If code exist and session is empty
    if($_GET['code'] && !($_SESSION['access_token'])) {
        // If the code was in get parameter we authorize
                
        $user = $meli->authorize($_GET['code'], 'http://www.XXXXXX.com.br/exemplo_login.php');
        echo '$user';
        // Now we create the sessions with the authenticated user
        $_SESSION['access_token'] = $user['body']->access_token;
        $_SESSION['expires_in'] = time() + $user['body']->expires_in;
        $_SESSION['refresh_token'] = $user['body']->refresh_token;
    } else {
        // We can check if the access token in invalid checking the time
        if($_SESSION['expires_in'] < time()) {
            try {
                // Make the refresh proccess
                $refresh = $meli->refreshAccessToken();
                // Now we create the sessions with the new parameters
                $_SESSION['access_token'] = $refresh['body']->access_token;
                $_SESSION['expires_in'] = time() + $refresh['body']->expires_in;
                $_SESSION['refresh_token'] = $refresh['body']->refresh_token;
            } catch (Exception $e) {
                  echo "Exception: ",  $e->getMessage(), "\n";
            }
        }
    }
    echo '<pre>';
        print_r($_SESSION);
    echo '</pre>';
    
} else {
    echo '<a href="' . $meli->getAuthUrl('http://www.XXXXXXXX.com.br/exemplo_login.php', Meli::$AUTH_URL['MLB']) . '">Login using MercadoLibre oAuth 2.0</a>';
}

 

Edited by ricbace

Share this post


Link to post
Share on other sites
  • 0

Olá @ricbace, tudo bem?

Eu copiei o seu exemplo e executei utilizando os meus dados, não tive problema algum para gerar o token.

Captura de Tela 2017-07-10 às 18.59.43.png

Repare que até o $user que você colocou na linha 11 do seu código está aparecendo no meu resultado.

Parece que você está tendo algum problema do lado do seu servidor e não com a SDK ou Mercado Livre.

As configurações do meu meli.php são

public static $CURL_OPTS = array(
        CURLOPT_USERAGENT => "MELI-PHP-SDK-1.1.0", 
        CURLOPT_SSL_VERIFYPEER => true,
        CURLOPT_CONNECTTIMEOUT => 10, 
        CURLOPT_RETURNTRANSFER => 1, 
        CURLOPT_TIMEOUT => 60
);

Estou com a seguinte versão do PHP

PHP 7.0.15-0ubuntu0.16.04.4

Poste mais informações para analisarmos.

Abraços
Wesley.

Share this post


Link to post
Share on other sites
  • 0

Olá Wesley, obrigado pela resposta, ainda não consegui rodar, minha versão é PHP Version 5.4.45
Vou entrar em contato com o servidor pra ver se há algo que podem me ajudar......   retorno esta proxima semana com o resultado. 

Edited by ricbace

Share this post


Link to post
Share on other sites
  • 0
2 hours ago, mldev said:

@Wesley Nascimento e @ricbace,

o $user aparece no echo por um erro básico de PHP... aspas simples (') retornam o conteúdo literal, para que a variável seja interpretada deve ser usada aspas duplas (")... ou nesse caso retirar as aspas pois não é necessário

Eu só me referi que não havia tocado em absolutamente nada do código dele. :10_wink:

Share this post


Link to post
Share on other sites
  • 0
1 hour ago, Wesley Nascimento said:

Eu só me referi que não havia tocado em absolutamente nada do código dele. :10_wink:

vdd!!! li correndo e li errado....kkkk ... de qualquer forma fica a dica pro @ricbace

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this