2011-12-21 4 views
0

트위터 OAuth에서 요청 토큰을 얻으려고하면 응답을 얻으 려 할 때 항상 서버 오류 401이 발생합니다. Oauth를 배우려고하고 기존 라이브러리를 만들려고하기 때문에 기존 라이브러리를 사용하고 싶지 않습니다. http://oauth.net/core/1.0a/#http_codes에서기존 라이브러리가없는 Asp.net 및 OAuth 간단한 예제

WebRequest request = WebRequest.Create("https://api.twitter.com/oauth/request_token"); 
request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded"; 

StringBuilder sbParams = new StringBuilder(); 
sbParams.Append("OAuth "); 
sbParams.AppendFormat("oauth_consumer_key={0},", "[COMSUMERKEY]"); 
sbParams.AppendFormat("oauth_signature_method={0},", "PLAINTEXT"); 
sbParams.AppendFormat("oauth_signature={0},", HttpUtility.UrlEncode("[COMSUMER_SECRET]&")); 
sbParams.AppendFormat("oauth_timestamp={0},", ((int)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds).ToString()); 
sbParams.AppendFormat("oauth_nonce={0},", "asdfalkjpoijwpeonpoaisudfnpowieuyfpasosdfdn"); 
sbParams.AppendFormat("oauth_version={0},", "1.0"); 
sbParams.AppendFormat("oauth_callback={0}", HttpUtility.UrlEncode(Request.Url.ToString())); 

request.Headers.Add("Authorization", sbParams.ToString()); 

// Get the response. 
WebResponse response = request.GetResponse(); 

답변

1

당신이

HTTP 401 Unauthorized 
    Invalid Consumer Key 
    Invalid/expired Token 
    Invalid signature 
    Invalid/**used nonce 

"사용 된 비표"것은 문제가있을 수 있습니다 알고 : 이것은 내 간단한 코드입니다. 임의의 문자열을 생성해야합니다. http://oauth.net/core/1.0a/#nonce

에서 넌스 고유 심각한 비즈니스 넘어 가서 요청


에 대해 생성 된 임의의 문자열이다. 당신이 그것을받은 후에 당신은 당신의 소비자 비밀을 전하기로되어 있지 않습니다! 대부분의 OAuth 라이브러리는 모습에도 불구하고

request_request_token(consumer_key,consumer_secret) 

에서, consumer_secret이 을 전송되지 않습니다 있습니다. 서버 측의 응답 확인을 위해 클라이언트 측에서 사용됩니다. (서버 측에서도 비슷한 확인이 발생합니다.)

그리고 의 서명 요청에 대한 고정 값을 넣지 마십시오.

All Token requests and Protected Resources requests MUST be signed by the Consumer and verified by the Service Provider. 

최하위 http://oauth.net/core/1.0a/#signing_process에서 : 어떻게 프로토콜 작품을 볼 수 http://oauth.net/core/1.0a/ 기사를 읽고 있습니다. 너무 많은 세부 사항을 추상화하지 않는 실습용 OAuth 라이브러리를 선택하십시오 (사용 된 oauth-php 라이브러리는 SQL 테이블과 관리 데이터 저장소 및 세션 메모리와 함께 제공됨).

+0

답변 해 주셔서 감사합니다. 나는 그것에 대해 더 많이 읽을 것이다. – sebascomeau