我尝试使用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
答案 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 =来自文件的值。