我无法从$ _GET [“code”]获取访问令牌

时间:2016-11-24 13:04:24

标签: php google-api-php-client

我尝试使用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>';

?>

我几乎阅读了所有文件,但我找不到问题。有什么问题???

编辑=我在我的localhost中尝试这个。它给出了这个错误= GuzzleHttp \ Exception \ RequestException:cURL error 60

1 个答案:

答案 0 :(得分: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 =来自文件的值。