【问题标题】:Creating Twitter signature for authorisation with PHP使用 PHP 创建 Twitter 签名以进行授权
【发布时间】:2013-09-01 16:35:21
【问题描述】:

在使用 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 相同的结果。

【问题讨论】:

    标签: php twitter base64


    【解决方案1】:

    找到了我自己的问题的答案:

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

    【讨论】:

      猜你喜欢
      • 2011-12-14
      • 1970-01-01
      • 2012-11-30
      • 2013-03-14
      • 1970-01-01
      • 2020-10-02
      • 2019-02-14
      • 2016-09-19
      • 1970-01-01
      相关资源
      最近更新 更多