많은 Twitter API 관련 게시물이 있지만 아무도 직접 내 질문에 대답하지 않는 것 같습니다.VB.NET을 사용하여 Twitter API에 대한 webrequest POST 만들기
POST로 HttpWebRequest를 보내는 방법을 알고 있습니다. 나는 많은 라이브러리가 알고
"https://api.twitter.com/1/statuses/update.json"(완전히 명확하지) :
난에 WebRequest 클래스를 보낼 필요가 꽤 확신 당신이해야 할 일은 소비자 키와 토큰 키를 전달하는 것뿐입니다. 그러나, 나는 간단한 코드를 하드 코딩 된 문자열로 트위터에 게시하는 기능에서 매우 짧은 코드를 만들어야합니다. 하드 코딩 된 문자열이 변수로 대체됩니다.
트위터에서 상태 업데이트 또는 모든 종류의 정보를 확인할 필요가 없습니다. 그냥 POST "Hello World!" 시작하고 거기에서 갈 수 있습니다.
저는 VB.NET을 사용해야합니다. http://oauth.googlecode.com/svn/code/vbnet/oAuth.vb
내가 기능을 수행 대략 무엇을 볼 수 있습니다 나는 모두가 내가 여기에 C-샤프 코드의 니콜라스 Tarzia의 VB.NET 포트에서 보았다, 말했다, 이제 비주얼 스튜디오 웹 개발자 2010
을 사용하고 있습니다 그 (것)들을 보아서, 그러나 나가 webresponse를 창조하고 Twitter에 보내기 위하여 부를 필요가있는 무슨 아이디어가! 또한이 코드에는 필요한 것 이상이 포함되어 있다고 생각합니다. POST를 만들고 싶다면 함수와 넌 스 함수, 토큰 및 키만 해시 할 필요가 있습니다. 그게 맞습니까? 만약 그렇다면 누군가 제가 이것을 좁히도록 도와 주실 수 있습니까? 이 과정에서 좀 더 잘 이해할 수 있도록 웹 퀘스트가 제대로 작성되면 트위터로 보내야합니다.
감사합니다,
윌
PS - 나는 마침내 함께 OAuth를 문서, VB에서 POST 요청을 사용하여에 깔끔한 작은 코드 예제를 찾고에 따라 몇 가지 코드를 넣어 트위터 개발자 지역의 OAuth 도구 요청에 대한 기본 문자열을 생성합니다. 불행히도 컴파일되고 실행되는 동안 나는 트윗을 얻지 못하고 있습니다. 누군가 코드를보고 눈부신 문제가 있는지 확인할 수 있습니까? 분명히 내 토큰과 소비자 키를 "xxxxx"로 바꿨습니다. 내가 크리스마스에 원하는 것은이 코드를 실행하고 내 트위터 계정에서 빠른 트윗을 만드는 것입니다! ;)
Public Shared Function Tweet(strText As String) As Boolean
Dim boolResult As Boolean = False
Dim urlAddress As Uri = New Uri("https://api.twitter.com/1/statuses/update.json")
Dim strData As StringBuilder
Dim byteData() As Byte
Dim postStream As Stream = Nothing
Dim strConsumerKey As String = "xxxxxx"
Dim strConsumerSecret As String = "xxxxxx"
Dim strAccessToken As String = "xxxxxx"
Dim strAccessTokenSecret As String = "xxxxxx"
Dim objRequest As HttpWebRequest
Dim objResponse As HttpWebResponse = Nothing
Dim objReader As StreamReader
Dim objHeader As HttpRequestHeader = HttpRequestHeader.Authorization
Try
objRequest = DirectCast(WebRequest.Create(urlAddress), HttpWebRequest)
objRequest.Method = "POST"
objRequest.ContentType = "application/x-www-form-urlencoded"
strData = New StringBuilder()
strData.Append("&Hello_World%2521%3D%26oauth_consumer_key%3D" + strConsumerKey + "%26oauth_nonce%3Dda6bb8ce7e48547692f4854833afa680%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1329746260%26oauth_token%3D" + strAccessToken + "%26oauth_version%3D1.0")
objRequest.Headers.Add(objHeader, "Authorization: OAuth oauth_consumer_key=""xxxx"", oauth_nonce=""da6bb8ce7e48547692f4854833afa680"", oauth_signature=""xxxx"", oauth_signature_method=""HMAC-SHA1"", oauth_timestamp=""1329750426"", oauth_token=""xxxx"", oauth_version=""1.0""")
' Create a byte array of the data we want to send
byteData = UTF8Encoding.UTF8.GetBytes(strData.ToString())
' Set the content length in the request headers
objRequest.ContentLength = byteData.Length
Try
postStream = objRequest.GetRequestStream()
postStream.Write(byteData, 0, byteData.Length)
Finally
If Not postStream Is Nothing Then postStream.Close()
End Try
boolResult = True
Catch ex As Exception
boolResult = False
HttpContext.Current.Session.Add("Error", ex.ToString())
End Try
Try
' Get response
objResponse = DirectCast(objRequest.GetResponse(), HttpWebResponse)
' Get the response stream into a reader
objReader = New StreamReader(objResponse.GetResponseStream())
' Console application output
Console.WriteLine(objReader.ReadToEnd())
Finally
If Not objResponse Is Nothing Then objResponse.Close()
End Try
Return boolResult
End Function
Nikolas Tarzia 코드를 사용하면 작동/응답으로 이해할 수 있습니다. 위의 요청 문자열을 작성하기 위해 dev.twitter.com에서 OAuth 빌드 도구를 사용하고 있는데 문제가 될 수 있습니다. Tarzia 코드는 기본 문자열을 만듭니다. 여기에 대한 응답 대신에 다음으로 실험 해 보겠습니다. 미리 감사드립니다. :) – WillShakes
알았어 - 내가 원하는 것을 정확하게하는 것으로 보이는 C# 코드를 찾았지만 VB를 사용할 때 이동하고 포트해야했습니다. 내 포팅 된 코드와 의견은 여기를 참고하십시오 : [Code Project] (http://www.codeproject.com/Articles/247336/Twitter-OAuth-authentication-using-Net?msg = 4162685 # xx4162685xx) – WillShakes
명확히하기 위해 나는 거의 내가 거기 있다고 생각한다. 나는 원격 서버 (트위터)로부터 401 Unauthorized 응답을 받는다. 그래서 문제가 내 포팅 코드인지 아니면 Twitter에서 설정했는지 (내 앱에서 읽기/쓰기로 설정했는지 여부)를 파악하려고 시도 중입니다. VB 전문가가 있습니까? ;) – WillShakes