我必须将Web应用程序与API集成在一起。该API使用OAuth 1.0来授权请求。我已经浏览了http://oauth.net/core/1.0a/上的文档。我已经按照所有步骤生成了签名,但是服务器始终返回消息“无效签名”。
但是,如果我将我的使用者密钥,使用者密钥,访问令牌和访问令牌密钥放在POSTMAN中。然后服务器将接受POSTMAN生成的签名。
这意味着服务器没有问题。问题出在我用来生成签名的代码中。
这是我阅读文档以生成令牌后编写的代码。
$consumer_key = '__MY_CONSUMER_KEY__';
$secret = '__MY__SECRET_KEY__';
$url = 'http://oauth.example.com/oauth/initiate';
$parameters = 'oauth_callback=oob&oauth_consumer_key='.$consumer_key.'&oauth_nonce='.dechex(time()).'&oauth_signature_method=HMAC-SHA1&oauth_timestamp='.time().'&oauth_version=1.0';
$signature = base64_encode(hash_hmac('sha1', 'GET&'.rawurlencode($url).'&'.rawurlencode($parameters), $secret, true));
$signed_request = $url.'?'.$parameters.'&oauth_signature='.$signature.PHP_EOL;
我知道有一些预定义的软件包可用于此,但是我想知道为OAuth 1.0生成签名的实际逻辑是什么。