0

Twitter API v1.1 を使用する場合、承認プロセスの一部として署名を作成するために、Twitter で概説されている手順に従っています。手順はオンラインでここにあります:

https://dev.twitter.com/docs/auth/creating-signature

署名ベース文字列と署名キーがある最後のビットに到達しました。最終的な署名を生成するのに苦労しています。

sig ベース文字列と署名キーを HMAC-SHA1 ハッシュ アルゴリズムに渡し、base64 エンコーディングを使用する必要があります。これがどの順序で行われるか、またはコードが正確にどうなるかはわかりません。これは私が試したことですが、Twitterの例と同じ結果にはなりません:

$sigBaseString = '  

    POST&https%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fupdate.json&include_entities%3Dtrue%26oauth_consumer_key%3Dxvz1evFS4wEEPTGEFPHBog%26oauth_nonce%3DkYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1318622958%26oauth_token%3D370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb%26oauth_version%3D1.0%26status%3DHello%2520Ladies%2520%252B%2520Gentlemen%252C%2520a%2520signed%2520OAuth%2520request%2521'

    $signingKey = 'kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw&LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE';

    $sig = hash_hmac('sha1',$sigBaseString,$signingKey);
    echo base64_encode($sig);

hash_hmac を間違って使用していますか? 間違った部分で base64 エンコーディングを実行しましたか? Twitterと同じ結果が得られないようです。

4

1 に答える 1

0

私自身の質問に対する答えを見つけました:

$sig = base64_encode(hash_hmac('sha1',$sigBaseString,$signingKey,TRUE));
于 2013-08-29T14:20:39.093 に答える