我试图通过试验twitteroauth php 库来更好地理解 OAuth。
据我了解,通过 OAuth 进行身份验证的方法是在使用 cUrl 时使用“授权”标头。但是,检查 twitteroauth 库的源代码,我可以看到标头设置为用于发布请求:
curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));
应该在“授权”标题中设置的参数实际上是在帖子正文中设置的,而不是在以下行中:
curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
这样做的原因是什么?当在 twitter API 指南中为标头指定以下实现时:
POST /1/statuses/update.json?include_entities=true HTTP/1.1
Accept: */*
Connection: close
User-Agent: OAuth gem v0.4.4
Content-Type: application/x-www-form-urlencoded
Authorization:
OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog",
oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg",
oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1318622958",
oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb",
oauth_version="1.0"
Content-Length: 76
Host: api.twitter.com
status=Hello%20Ladies%20%2b%20Gentlemen%2c%20a%20signed%20OAuth%20request%21