Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP创建用于授权的Twitter签名_Php_Twitter_Base64 - Fatal编程技术网

使用PHP创建用于授权的Twitter签名

使用PHP创建用于授权的Twitter签名,php,twitter,base64,Php,Twitter,Base64,我遵循Twitter概述的步骤,在使用Twitter API v1.1时创建签名,作为授权过程的一部分。这些步骤在此处联机: 到了最后一点,我有一个签名基字符串和一个签名密钥。我正在努力生成最终签名 我需要将sig base字符串和签名密钥传递给HMAC-SHA1哈希算法,然后使用base64编码。我不确定这是什么顺序,或者确切的代码是什么。以下是我尝试过的,但结果与Twitter的例子不同: $sigBaseString = ' POST&https%3A%2F%2Fa

我遵循Twitter概述的步骤,在使用Twitter API v1.1时创建签名,作为授权过程的一部分。这些步骤在此处联机:

到了最后一点,我有一个签名基字符串和一个签名密钥。我正在努力生成最终签名

我需要将sig base字符串和签名密钥传递给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相同的结果。

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

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