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 回答