2010-03-26 72 views
1

我使用Google/YouTube API來開發需要訪問用戶YouTube帳戶的Web應用程序。如何在PHP中獲得安全的AuthSub會話令牌?

正常的不安全請求可以正常工作,我可以將一次令牌升級爲會話令牌而不會有任何麻煩。當我嘗試將安全令牌升級到會話令牌時出現問題,我得到:

錯誤 - CIzF3546351vmq_P____834654G的令牌升級失敗:令牌升級失敗。原因: AuthSub簽名無效。

我用這個:

function updateAuthSubToken($singleUseToken) 
    { 
     try { 
     $client = new Zend_Gdata_HttpClient(); 
     $client->setAuthSubPrivateKeyFile('/home/myrsakey.pem', null, true); 
     $sessionToken = Zend_Gdata_AuthSub::getAuthSubSessionToken($singleUseToken, $client); 
     $sessionToken = Zend_Gdata_AuthSub::getAuthSubSessionToken(trim($singleUseToken), $client); 
     //$client->setAuthSubToken($sessionToken); 
     } catch (Zend_Gdata_App_Exception $e) { 
      print 'ERROR - Token upgrade for ' . $singleUseToken 
       . ' failed : ' . $e->getMessage(); 
      return; 
     } 
     $_SESSION['sessionToken'] = $sessionToken; 
     $date = gmdate("M d Y H:i:s", mktime(0, 0, 0, 1, 1, 1998)); 
     header('Authorization: AuthSub token="'.$_SESSION['sessionToken'].'" data="GET 
    https://www.youtube.com/auth_sub_request '.$date.' 15948652339726849410" '. 
    'sig="MIICXAIBAAKBgQDLJn/sr7TrmQpsEaL312k9dEpikVGFHbE+FjNg7/lfagkTZXf3'. 
    't96omgSEyZat2RcckVAGs9dU5kbGLJxEaW2ChQplzCKDi+20HZZo7C1QCluaMJ6b'. 
    ... 
    '0pj+zWPy4T04PH3elN6EkhQ5Vxy5wbBkugqIDqfOKuM=" '. 
    'sigalg="rsa-sha1"'); 
     } 

我不明白的是:隨機數:編碼爲十進制ASCII字符串一個隨機的64位無符號數!我必須把爲$日期後(... 15948652339726849410「」 ... '$日期。')

回答

0

我相信你要的電話是:

$sessionToken = Zend_Gdata_AuthSub::getAuthSubSessionToken($singleUseToken, $client);

調用Zend_Gdata_AuthSub::AuthSubRevokeToken()將取消您的單次使用令牌有一個偉大的小費here演示完整安全的AuthSub流

0

有辦法做到這一點無需客戶端庫在這裏闡述:。HTTP://codershelpingcoders.com/

看看你是否願意。