PHP nasıl güvenli AuthSub oturum belirteçleri alabilirim?

2 Cevap php

Ben, kullanıcıların YouTube hesabına erişim ihtiyacı web uygulaması geliştirmek için Google / YouTube API'leri kullanıyorum.

Normal güvensiz istekleri ince iş ve ben herhangi bir zorluk olmadan oturum belirteçleri bir zaman belirteçleri yükseltebilirsiniz. Ben denemek ve bir oturum belirteci güvenli bir belirteci yükselttiğinizde sorun geliyor, alıyorum:

ERROR - Token upgrade for CIzF3546351vmq_P____834654G failed : Token upgrade failed. Reason: Invalid AuthSub signature.

ben bu kullanın:

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

Nonce: i ne olduğunu anlamıyorum onluk bir ASCII dizesi olarak kodlanmış rastgele bir 64-bit işaretsiz sayı! i koymak gerekir $ tarih (... '. $ tarih.' 15948652339726849410 "'...) sonra

2 Cevap

İstediğin çağrı olduğuna inanıyorum:

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

Zend_Gdata_AuthSub::AuthSubRevokeToken() sizin tek kullanımlık belirteci iptal edecektir çağırıyor. Tam güvenli AuthSub akışını gösterir here büyük bir ipucu var.

Istemci kütüphanesi olmadan bunu yapmak için bir yol var burada durulmuştur: http://codershelpingcoders.com/

İsterseniz bir bakın.