当前位置: 首页 > 编程语言 > C#

不使用第三方库设置TwitterOAuth共享

时间:2023-04-10 21:07:36 C#

不使用第三方库设置TwitterOAuth继续获取Twitter公共时间线,json+C#,没有第三方库我还是C#,新手tooAuth所以请耐心等待我,如果我不明白我创建了一个名为oAuthClass的C#类,这些是我目前拥有的变量:字符串oauth_nonce=PseudoRandomStringUsingGUID();stringoauth_consumer_key="消费者密钥在这里";字符串oauth_signature_method="HMAC-SHA1";字符串oauth_version="1.0";选择使用HMAC-SHA1,我不知道如何生成签名,在阅读和查看HTTP-Encodings和Base-Strings等之后,我也很困惑还有什么(我不知道它们是什么意思全部),但我的想法是创建一个“Http编码”的URL,如空格->“%20”?总结一下:-什么是基本字符串?-我在空间->%20示例中吗?-HMAC-SHA1涉及消息和密钥,消息消费者是秘密的吗?消费者密钥是密钥吗?-如何使用HMAC-SHA1算法创建签名-如果我设法创建签名,我如何将这些值传递给Twitter?我可以使用http://example.com?consumer_key=asdf&oauth_signature=signaturevalue&etc.,但我读过,显然人们使用HTTP-Headers或其他东西(同样,我真的不知道那是什么)谢谢!也不允许第3方库:(很难在短时间内回答你问题,因为实现完整的OAuth客户端并非易事,需要真正理解OAuth1.0a规范。这不是火箭科学,但确实需要整理所有零碎的东西。我会尝试零碎地回答你的问题。什么是基础字符串?OAuth中的签名基本字符串构建如下:我将在最后一步描述如何创建所需的参数字符串。收集请求中包含的所有参数。您可以在URL中找到它们作为查询字符串的一部分,或者在POST请求的请求文本中找到它们。例如,您想将参数parameter1=value1POST到URLhttp://example.com/?parameter2=value2。这使得包括两个参数。现在,您还必须包装协议所需的所有OAuth参数才能正常运行。这些将产生一个如下所示的参数列表:所有这些单独的字符串都需要按参数名称的字典顺序(字母顺序)排序,然后连接成一个字符串。那是你的参数字符串。我对space->%20示例是否正确?是的。你说的是百分比编码,它也是HTTP编码和URL编码的名称。http://en.wikipedia.org/wiki/Percent-encoding。HMAC-SHA1涉及到一条消息和一个密钥,消息消费者秘密吗?消费者密钥是密钥吗?该消息是您在上面创建的签名基本字符串。密钥是您的消费者机密和访问令牌机密的组合。因此密钥应如下所示:CONSUMER_SECRET&TOKEN_SECRET(注意&符号)。在您提出的绝对第一个请求中,您还没有令牌秘密,那么密钥只是CONSUMER_SECRET&(再次注意与号)。如何使用HMAC-SHA1算法创建签名。我从http://oauth.googlecode.com/svn/code/csharp/OAuthBase.cs获取了这个,并假设密码和基本字符串可用于代码。基本上为HMACSHA1实例提供密钥和消息,呈现该哈希并将其转换为base64字符串。HMACSHA1hmacsha1=newHMACSHA1();hmacsha1.Key=Encoding.ASCII.GetBytes(string.Format("{0}&{1}",UrlEncode(consumerSecret),string.IsNullOrEmpty(tokenSecret)?"":UrlEncode(tokenSecret)));byte[]dataBuffer=System.Text.Encoding.ASCII.GetBytes(signatureBaseString);byte[]hashBytes=hmacsha1.ComputeHash(dataBuffer);返回Convert.ToBase64String(hashBytes);如果我设法创建了签名,我该如何将这些值传递给Twitter?您应该能够轻松研究HTTP标头是什么。但是你可以选择向URL添加参数和签名的最终结果,我认为Twitter甚至在请求文本中接受了他们的一些请求。但首选方法是通过AuthorizationHTTP标头,因为它允许明确区??分特定于协议的参数和特定于请求的参数。它应该看起来像这样(直接取自OAuth1.0a规范):Authorization:OAuthrealm="Example",oauth_consumer_key="0685bd9184jfhq22",oauth_token="ad180jjd733klru7",oauth_signature_method="HMAC-SHA1",oauth_DvgiDbTS="2KW%JIO2FPY%3D",oauth_timestamp="137131200",oauth_nonce="4572616e48616d6d65724c61686176",oauth_version="1.0"如果您真的很困惑,只想使用一个简单的库,我建议您查看Twitterizer文档以获取示例,这非常简单设置简单。[编辑]哎呀,抱歉刚刚读到您不是在寻找第3方图书馆。不好意思,以上是C#学习教程:搭建TwitterOAuth共享的所有内容,无需第三方库。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: