2016-11-24 78 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

鏈接?我形成一個按鈕,並在html代碼中給auth_url。 – 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 

} 


?> 

現在,如果您已經保存了訪問碼,則不需要創建一個auth URL。只需從文件中獲取訪問碼,然後使用$client->authenticate($code);,其中$ code =文件中的值。

+0

它也不起作用 – CaveMan