0

Google DataPHPAPIを使用しています。https://developers.google.com/youtube/2.0/developers_guide_php#AuthSub_for_Web_Applicationsをフォローし、更新トークンを保持することを期待し、アクセストークンを取得するためのリクエストを送信します。更新トークンは、ビデオを所有するユーザー用です(Javaを使用してこれを実行しました)。しかし、結局、私はまだ認証できません。ここで何が問題になっていますか?コードは次のとおりです。

$refreshToken = '1/wY9.......';
$postString = 'client_id=' . $_SESSION['clientId'] .
        '&client_secret=' . $_SESSION['clientSecret'] . 
        '&refresh_token=' . $refreshToken .
        '&grant_type=refresh_token';

$ch = curl_init($_SESSION['oauth2Url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
$result = curl_exec($ch);
curl_close($ch);

$json = json_decode($result);
$accessToken = $json->access_token;

$httpClient = Zend_Gdata_AuthSub::getHttpClient($accessToken);

$yt = new Zend_Gdata_YouTube($httpClient, null, $_SESSION['clientId'], $_SESSION['developerKey']);
$yt->setMajorProtocolVersion(2);

$youtubeId = 'xxxxxxxxxxx';

$videoEntry = $yt->getVideoEntry($youtubeId);
if ($videoEntry->getEditLink() !== null) {
    echo 'can edit!';
} else {
    echo 'cannot edit!';
}

* アップデート *

他の人が示唆しているように、私は試しvar_dump($httpClient)ましたが、次のようになりました。

object(Zend_Gdata_HttpClient)#1 (23) { 
  ["_authSubPrivateKeyId":"Zend_Gdata_HttpClient":private]=> NULL 
  ["_authSubToken":"Zend_Gdata_HttpClient":private]=> string(61) "yaXXXXX"
  ["_clientLoginToken":"Zend_Gdata_HttpClient":private]=> NULL
  ["_clientLoginKey":"Zend_Gdata_HttpClient":private]=> NULL 
  ["_streamingRequest":protected]=> NULL 
  ["config":protected]=> array(12) { 
    ["maxredirects"]=> int(5) 
    ["strictredirects"]=> bool(true) 
    ["useragent"]=> string(28) "Zend_Framework_Gdata/1.11.12" 
    ["timeout"]=> int(10) 
    ["adapter"]=> string(31) "Zend_Http_Client_Adapter_Socket" 
    ["httpversion"]=> string(3) "1.1" 
    ["keepalive"]=> bool(false) 
    ["storeresponse"]=> bool(true) 
    ["strict"]=> bool(true) 
    ["output_stream"]=> bool(false) 
    ["encodecookies"]=> bool(true) 
    ["rfc3986_strict"]=> bool(false) 
  } 
  ["adapter":protected]=> NULL 
  ["uri":protected]=> NULL 
  ["headers":protected]=> array(0) { } 
  ["method":protected]=> string(3) "GET" 
  ["paramsGet":protected]=> array(0) { } 
  ["paramsPost":protected]=> array(0) { } 
  ["enctype":protected]=> NULL 
  ["raw_post_data":protected]=> NULL 
  ["auth":protected]=> NULL 
  ["files":protected]=> array(0) { } 
  ["body_field_order":protected]=> array(0) { } 
  ["cookiejar":protected]=> NULL 
  ["last_request":protected]=> NULL 
  ["last_response":protected]=> NULL 
  ["redirectCounter":protected]=> int(0) 
  ["_unmaskStatus":protected]=> bool(false) 
  ["_queryBracketsEscaped":protected]=> bool(true)
} 
4

1 に答える 1

0

最後に、私は何が起こったのかを知っています。

認証は実際に完了します。ただし$videoEntry->getEditLink()、サービスが認証されているかどうかをテストするために使用しないでください。ZendPHPライブラリはかなり古いものです。おそらく、新しいデータ構造には編集リンクがありません。

于 2012-07-27T22:54:56.737 に答える