2

我正在我的网站上集成“使用 twitter 帐户登录”功能。

所以,我向 https://twitter.com/oauth/request_token 发送请求,获取令牌,重定向到 https://twitter.com/oauth/authenticate?oauth_token=%oauth_token%

然后我收到回电 oauth_token 和 oauth_verifier

这很好。

但是我需要调用 https://api.twitter.com/1/account/verify_credentials.json 来获取授权的客户详细信息

我正在发送:

GET https ://api.twitter.com/1/account/verify_credentials.json
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: q=0.8,en-us;q=0.5,en;q=0.3
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
X-Auth-Service-Provider: https ://api.twitter.com/1/account/verify_credentials.json
X-Verify-Credentials-Authorization: OAuth realm="http://api.twitter.com/", oauth_signature="acYFjEgUrTcyb4FMBoJF8MlwZGw%3D", oauth_timestamp="1286899670", oauth_consumer_key="%CONSUMER_KEY%", oauth_nonce="268310006", oauth_token="%oauth_token%", oauth_version="1.0", oauth_signature_method="HMAC-SHA1"

%oauth_token% - token got when twitter redirects me back the cleint
%CONSUMER_KEY% - my twitter account's consumer key

回来

HTTP/1.1 401 Unauthorized
Cache-Control: no-cache, max-age=300
Connection: close
Date: Tue, 12 Oct 2010 16:07:45 GMT
Server: hi
Vary: Accept-Encoding
WWW-Authenticate: Basic realm="Twitter API"

{"error":"Could not authenticate you.","request":"/1/account/verify_credentials.json"}

谁能告诉我这里有什么问题?

谢谢!

4

3 回答 3

3

收到回调后,您必须向POST oauth/access_token发出请求,以将临时 request_token 交换为与用户关联的永久 access_token。收到 access_token 后,您可以执行GET account/verify_credentials请求。

于 2010-10-23T05:36:08.843 回答
0

这是一个很好的流程图,解释了完整的 OAuth 过程是如何工作的。

流程图

听起来您已经完成了三分之二的身份验证。现在您需要将您的授权请求令牌交换为永久访问令牌。

于 2010-11-07T15:29:52.157 回答
0

您正在使用标头传递参数(X-Verify-Credentials-Authorization),而不是您应该使用GET 方法。如果您使用的是 php Zend 框架的 OAuth 组件,那么它应该看起来像

$client->setMethod(Zend_Http_Client::GET);
于 2010-12-21T10:48:39.523 回答