2016-11-24 3 views
0

Я пытаюсь использовать google youtube api. Все прошло хорошо. Я формирую клиентский объект, как указано в документах. Я перенаправляю на youtube для получения разрешения и разрешения. Затем я принимаю $_GET["code"]. Но я не могу обменять его на токен доступа. В client -> authenticate метод, выполнение останавливается. Относительный фрагмент кода:

<?php 

    require_once ('XXX/vendor/autoload.php'); 
    $client = new Google_Client(); 
    $client->setApplicationName("AdKeek"); 
    $client->setAuthConfig('XXX/client_secrets.json'); 
    $client->addScope("https://www.googleapis.com/auth/youtube.readonly"); 
    $redirect_uri = 'XXX THIS PAGE'; 
    $client->setRedirectUri($redirect_uri); 
    $auth_url = $client->createAuthUrl(); 
    if (isset($_GET['code'])) { 
      $client->authenticate($_GET['code']); 
    } 
    echo '<div class="col-xs-6 col-sm-3" style="padding-top: 10px;"> 
      <a href="'.$auth_url.'" style="border-radius: 5px;padding-left: inherit;padding-top: 5px;padding-bottom: 5px;width: 127px; display: block;" class="yutub" ><i class="fa fa-youtube" aria-hidden="true"></i> 
      <span class="social-text">YouTube</span><i class="fa fa-link" aria-hidden="true" style="padding-left: 15px;"></i></a></div>'; 

?> 

Я прочитал почти каждый документ, но я не могу найти проблему. В чем проблема ???

Редактировать = Я пробую это в своем локальном хосте. И он дает эту ошибку = GuzzleHttp \ Exception \ RequestException: ошибка cURL 60

+0

Вы действительно уверены: '$ _GET ['code']' имеет значение? –

+0

Да, я написал его в файле и правильно – CaveMan

+0

link? Я формирую кнопку и даю auth_url в html-коде. – CaveMan

ответ

0

Я думаю, что вы не следуете за потоком аутентификации соответствующим образом. После $auth_url = $client->createAuthUrl(); вы должны быть перенаправлены для аутентификации, а затем получите свой код доступа. Вы должны использовать header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL)); Попробуйте использовать этот код вместо этого.

<?php 

require_once ('XXX/vendor/autoload.php'); 
$client = new Google_Client(); 
$client->setApplicationName("AdKeek"); 
$client->setAuthConfig('XXX/client_secrets.json'); 
$client->addScope("https://www.googleapis.com/auth/youtube.readonly"); 
$redirect_uri = 'XXX THIS PAGE'; 
$client->setRedirectUri($redirect_uri); 

if (!isset($_GET['code'])) { 

    $auth_url = $client->createAuthUrl(); 

    echo '<div class="col-xs-6 col-sm-3" style="padding-top: 10px;"> 
     <a href="'.$auth_url.'" style="border-radius: 5px;padding-left: inherit;padding-top: 5px;padding-bottom: 5px;width: 127px; display: block;" class="yutub" ><i class="fa fa-youtube" aria-hidden="true"></i> 
     <span class="social-text">YouTube</span><i class="fa fa-link" aria-hidden="true" style="padding-left: 15px;"></i></a></div>'; 

} else { 

    $client->authenticate($_GET['code']); 
    //whatever else you want to do 

} 


?> 

Теперь, если вы уже сохранили код доступа, вам не нужно создавать URL-адрес авторизации. Вместо этого просто хватайте код доступа из файла, а затем используйте $client->authenticate($code); где $ code = value из файла.

+0

Он тоже не работает – CaveMan

Смежные вопросы