Я пытаюсь использовать API QQ (огромная китайская социальная сеть, похожая на ICQ), который использует OAuth.Я достаточно знаком с OAuth, но я могу читать только китайский через Google Translate.
Я использую Rails 3.0.7 и следую инструкциям в документации oauth gem .
Согласно документации QQ их идентификатор приложения соответствуетoauth_consumer_key и их APP KEY - секрет пользователя oauth.Они также указывают, какой URL использовать.В консоли я делаю следующее:
@consumer=OAuth::Consumer.new("APP ID", "APP SECRET",{:site =>
"http://openapi.qzone.qq.com", :request_token_path=>"/oauth/qzoneoauth_request_token",
:authorize_path => "/oauth/qzoneoauth_authorize", :access_token_path =>
"/get_access_token.php"} )
Возвращает:
#<OAuth::Consumer:0x0000010283f6a0 @key="APP ID", @secret="APP SECRET",
@options={:signature_method=>"HMAC-SHA1",
:request_token_path=>"/oauth/qzoneoauth_request_token",
:authorize_path=>"/oauth/qzoneoauth_authorize",
:access_token_path=>"/get_access_token.php", :proxy=>nil, :scheme=>:header,
:http_method=>:post, :oauth_version=>"1.0", :site=>"http://openapi.qzone.qq.com"}>
Теперь пришло время получить токен запроса с сервера:
@request_token=@consumer.get_request_token
К сожалению, это возвращает код ошибки: 12005
, означающий неверный URL (спасибо @ timon-vonk).Но что с ним не так и как мне это отладить?Вот еще несколько подробностей о запросе, полученном с помощью net-http-spy :
@request_token=@consumer.get_request_token(
:oauth_callback => "http://ishiyou.com/qq")
opening connection to openapi.qzone.qq.com...opened
<- "GET /oauth/qzoneoauth_request_token HTTP/1.1\r\nAccept: */*\r\nUser-Agent:
OAuth gem v0.4.4\r\nAuthorization: OAuth
oauth_callback=\"http%3A%2F%2Fishiyou.com%2Fqq\",
oauth_consumer_key=\"******\",
oauth_nonce=\"gpv3iaYb7K3tExGxxnW5bjkyvU6ms3EuL9roLwgxs4\",
oauth_signature=\"3tgryVqRFjxoXSxnYTO%2FXuRNAU4%3D\",
oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1306933000\",
oauth_version=\"1.0\"\r\nConnection: close\r\nHost: openapi.qzone.qq.com\r\n\r\n"
-> "HTTP/1.1 200 OK\r\n"
-> "Connection: close\r\n"
-> "Server: QZHTTP-2.13\r\n"
-> "Date: Wed, 01 Jun 2011 12:56:42 GMT\r\n"
-> "Content-Length: 17\r\n"
-> "Content-type: text/html\r\n"
-> "Cache-Control: no-cache\r\n"
-> "\r\n"
reading 17 bytes...
-> "error_code=12005\n"
read 17 bytes
Conn close