2010-03-26 20 views
1

J'utilise les API Google/YouTube pour développer une application Web qui nécessite l'accès à un compte YouTube d'un utilisateur.Comment obtenir des jetons de session AuthSub sécurisés en PHP?

Les requêtes non sécurisées normales fonctionnent correctement et je peux mettre à niveau des jetons uniques vers des jetons de session sans aucun problème. Le problème survient lorsque j'essaie de mettre à niveau un jeton sécurisé vers un jeton de session:

ERREUR - La mise à niveau du jeton pour CIzF3546351vmq_P____834654G a échoué: la mise à niveau du jeton a échoué. Raison: Signature AuthSub incorrecte.

j'utilise ceci:

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"'); 
     } 

Je ne comprends pas ce qui est: nonce: 64 bits aléatoire, nombre non signé codé comme une chaîne ASCII en décimal! je dois mettre est après la date de $ (... 15948652339726849410 " » ... '$ date..)

Répondre

0

Je crois que l'appel que vous voulez est:

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

appel Zend_Gdata_AuthSub::AuthSubRevokeToken() révoquera votre seul jeton d'utilisation Il y a un bon conseil here qui démontre la pleine flux AuthSub sécurisé

0

Il y a moyen de le faire sans la bibliothèque cliente élaborée ici:.. http: //codershelpingcoders.com/

Jetez un coup d'oeil si vous voulez.