1

Google/YouTube API を使用して、ユーザーの YouTube アカウントにアクセスする必要がある Web アプリケーションを開発しています。

通常の安全でないリクエストは正常に機能し、手間をかけずにワンタイム トークンをセッション トークンにアップグレードできます。安全なトークンをセッショントークンにアップグレードしようとすると、問題が発生します。

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

ナンス: 10 進数で ASCII 文字列としてエンコードされたランダムな 64 ビットの符号なし数値! $date (... '.$date.' 15948652339726849410" '... )の後に入れなければならない

4

2 に答える 2

0

あなたが望んでいる電話は次のとおりだと思います:

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

呼び出すZend_Gdata_AuthSub::AuthSubRevokeToken()と、使い捨てトークンが取り消されます。完全な安全な AuthSub フローを示す素晴らしいヒントがここにあります。

于 2010-03-28T21:42:39.940 に答える
0

ここで詳しく説明されているクライアント ライブラリなしでこれを行う方法があります: http://codershelpingcoders.com/

見たい方はどうぞ。

于 2011-10-23T13:18:28.690 に答える