{"id":3822,"date":"2011-11-26T22:08:00","date_gmt":"2011-11-26T13:08:00","guid":{"rendered":"http:\/\/mimumimu.net\/blog\/2011\/11\/26\/twitter-%e3%81%ae-oauth-1-0-%e8%aa%8d%e8%a8%bc-%e8%a7%a3%e8%aa%ac%e3%80%82\/"},"modified":"2012-04-21T18:23:05","modified_gmt":"2012-04-21T09:23:05","slug":"twitter-%e3%81%ae-oauth-1-0-%e8%aa%8d%e8%a8%bc-%e8%a7%a3%e8%aa%ac%e3%80%82","status":"publish","type":"post","link":"https:\/\/mimumimu.net\/blog\/2011\/11\/26\/twitter-%e3%81%ae-oauth-1-0-%e8%aa%8d%e8%a8%bc-%e8%a7%a3%e8%aa%ac%e3%80%82\/","title":{"rendered":"Twitter \u306e OAuth 1.0 \u8a8d\u8a3c &#8211; \u89e3\u8aac\u3002"},"content":{"rendered":"<p>\u307f\u3080\u3089\u3067\u3059\u3002<\/p>\n<p>\u3072\u3068\u307e\u305a\u3001\u304a\u3079\u3093\u304d\u3087\u30fc\u3068\u3044\u3046\u3053\u3068\u3067\u3001\u5f8c\u304b\u3089\u3082\u5206\u304b\u308b\u3088\u3046\u306b\u3001    <br \/>\u5909\u6570\u3092\u591a\u304f\u4f7f\u3063\u3066\u6587\u5b57\u5217\u51fa\u529b\u3092\u3075\u3093\u3060\u3093\u306b\u51fa\u3057\u306a\u304c\u3089\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u304c\u3001\u6d77\u304b\u3089\u6765\u305f\u4fb5\u7565\u8005\u306b\u4fb5\u7565\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001    <br \/>\u305d\u3093\u306a\u3082\u306e\u5168\u304f\u6c17\u306b\u3057\u306a\u3044\u3001\u3080\u3057\u308d\u3001\u4fb5\u7565\u3055\u308c\u3066\u3044\u306a\u3044\u3067\u30b2\u30bd\uff01<\/p>\n<p>&#160;<\/p>\n<p>\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306f\u524d\u306e\u8a18\u4e8b\u306b\u3002    <br \/><a href=\"http:\/\/mimumimu.net\/blog\/2011\/11\/26\/twitter-%e3%81%ae-oauth-1-0-%e8%aa%8d%e8%a8%bc%e3%82%92%e8%87%aa%e5%88%86%e3%81%a7%e3%82%b3%e3%83%bc%e3%83%89%e6%9b%b8%e3%81%84%e3%81%a6%e3%82%84%e3%81%a3%e3%81%a6%e3%81%bf%e3%81%9f%e3%80%82\/\">Twitter \u306e OAuth 1.0 \u8a8d\u8a3c\u3092\u81ea\u5206\u3067\u30b3\u30fc\u30c9\u66f8\u3044\u3066\u3084\u3063\u3066\u307f\u305f\u3002<\/a><\/p>\n<p>&#160;<\/p>\n<p>&#8212;-<\/p>\n<p>\u53c2\u8003\u8cc7\u6599\uff1a<\/p>\n<p>* <a href=\"http:\/\/oauth.net\/core\/1.0\">http:\/\/oauth.net\/core\/1.0<\/a>     <br \/>* <a href=\"http:\/\/hueniverse.com\/oauth\/guide\/authentication\/\">http:\/\/hueniverse.com\/oauth\/guide\/authentication\/<\/a>     <br \/>* <a href=\"https:\/\/dev.twitter.com\/docs\/auth\/authorizing-request\/\">https:\/\/dev.twitter.com\/docs\/auth\/authorizing-request\/<\/a><\/p>\n<p>&#8212;-<\/p>\n<p>\u30fb\u30fb\u30fb\u3042\u307b\u307f\u305f\u3044\u306b\u9577\u304f\u306a\u308b\u3053\u3068\u304c\u5224\u660e\u3057\u305f\u306e\u3067\u3001\u3053\u306e\u8fba\u3067\u8a18\u4e8b\u3092\u5206\u5272\u3057\u3066\u304a\u304d\u307e\u3059\u3002    <br \/>\u898b\u305f\u3044\u65b9\u306f\u300c\u7d9a\u304d\u3092\u8aad\u3080\u300d\u304b\u3089\u3002<\/p>\n<p><!--more--><\/p>\n<p>&#160;<\/p>\n<p>\u4e0b\u8a18\u306e\u90e8\u5206\u3067\u89e6\u308c\u308b\u5404\u5909\u6570\u3001\u304a\u3088\u3073\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u3001\u7279\u306b\u65ad\u308a\u304c\u306a\u3051\u308c\u3070\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" width=\"677\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"156\">\n<p align=\"center\">\u5909\u6570\u540d<\/p>\n<\/td>\n<td valign=\"top\" width=\"519\">\n<p align=\"center\">\u8aac\u660e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">consumer_key          <br \/>(oauth_consumer_key)<\/td>\n<td valign=\"top\" width=\"519\">Consumer Key (Client Identifier)          <\/p>\n<p>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4e00\u610f\u306b\u793a\u3059\u306e\u306b\u7528\u3044\u3089\u308c\u308b\u5024\u3002<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">consumer_secret          <\/td>\n<td valign=\"top\" width=\"519\">Consumer Secret (Client Secret)          <\/p>\n<p>Consumer Key \u306b\u7d10\u3065\u3051\u3089\u308c\u305f\u3001\u691c\u8a3c\u76ee\u7684\u3067\u5229\u7528\u3055\u308c\u308b\u5024\u3002<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">access_token          <br \/>(oauth_token)<\/td>\n<td valign=\"top\" width=\"519\">Access Token          <\/p>\n<p>\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u3059\u308b\u969b\u306b\u7528\u3044\u308b\u3001           <br \/>\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u30e6\u30fc\u30b6\u3092\u7d10\u3065\u3051\u308b\u70ba\u306b\u4f7f\u308f\u308c\u308b\u5024\u3002           <\/p>\n<p>\uff08\u8a8d\u8a3c\u6642\u306b\u4e00\u610f\u306a\u5024\u304c\u767a\u884c\u3055\u308c\u308b\u3002\uff09<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">access_secret          <br \/>(oauth_token_secret)<\/td>\n<td valign=\"top\" width=\"519\">Access Secret          <\/p>\n<p>Access Token \u306b\u7d10\u3065\u3051\u3089\u308c\u305f\u3001\u691c\u8a3c\u76ee\u7684\u3067\u5229\u7528\u3055\u308c\u308b\u5024\u3002<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">request_token          <br \/>(oauth_token)<\/td>\n<td valign=\"top\" width=\"519\">Request Token          <\/p>\n<p>Access Token \/ Secret \u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u4e00\u6642\u7684\u306b\u767a\u884c\u3055\u308c\u308b\u5024\u3002<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">request_secret          <br \/>(oauth_token_secret)<\/td>\n<td valign=\"top\" width=\"519\">Request Secret          <\/p>\n<p>Request Token \u306b\u7d10\u3065\u3051\u3089\u308c\u305f\u3001\u691c\u8a3c\u76ee\u7684\u3067\u5229\u7528\u3055\u308c\u308b\u5024\u3002<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">nonce          <br \/>(oauth_nonce)<\/td>\n<td valign=\"top\" width=\"519\">Nonce          <\/p>\n<p>\u51e6\u7406\u3054\u3068\u306b\u9055\u3046\u3001\u4efb\u610f\u306e\u5024\u3092\u6307\u5b9a\u3059\u308b\u3002<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">unixtime          <br \/>(oauth_timestamp)<\/td>\n<td valign=\"top\" width=\"519\">Time stamp          <\/p>\n<p>UNIX \u6642\u9593 (1979-01-01 UTC \u304b\u3089\u306e\u79d2\u6570)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">signature          <br \/>(oauth_signature)<\/td>\n<td valign=\"top\" width=\"519\">Signature          <\/p>\n<p>\u6574\u5408\u6027\u30c1\u30a7\u30c3\u30af\u306e\u305f\u3081\u306b\u3001           <br \/>\u30ea\u30af\u30a8\u30b9\u30c8\u3092 Signature Method (Twitter \u3060\u3068 HMAC-SHA1) \u3067           <br \/>\u6307\u5b9a\u3057\u305f\u65b9\u5f0f\u3067\u30cf\u30c3\u30b7\u30e5\u3092\u3068\u3063\u305f\u5024\u3002<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">(oauth_signature_method)<\/td>\n<td valign=\"top\" width=\"519\">Signature Method          <\/p>\n<p>Signature \u3092\u4f5c\u308b\u305f\u3081\u306e\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3092\u6307\u5b9a\u3002           <br \/>HMAC-SHA1 \/ RSA-SHA1 \/ PLAINTEXT \u304c\u6307\u5b9a\u3067\u304d\u308b\u3002           <\/p>\n<p>(Twitter \u306e\u5834\u5408\u306f HMAC-SHA1 \u306e\u307f)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">(oauth_version)<\/td>\n<td valign=\"top\" width=\"519\">Version          <\/p>\n<p>\u4eca\u56de\u306f 1.0 \u3092\u5229\u7528\u3057\u307e\u3059\u3002<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">tweet_data          <br \/>(status)<\/td>\n<td valign=\"top\" width=\"519\">Status          <\/p>\n<p>\u3064\u3076\u3084\u304f\u5185\u5bb9\u3002<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">hwr<\/td>\n<td valign=\"top\" width=\"519\">HttpWebRequest \u578b\u306e\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3002          <br \/>\u3053\u308c\u3092\u4f7f\u3063\u3066\u901a\u4fe1\u3057\u307e\u3059\u3002<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"156\">param<\/td>\n<td valign=\"top\" width=\"519\">\u30d1\u30e9\u30e1\u30fc\u30bf\u6587\u5b57\u5217\u3092\u683c\u7d0d\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&#160;<\/p>\n<hr \/>\n<h4>\uff11\uff0eToken \u3092\u53d6\u5f97\u3059\u308b\u3002<\/h4>\n<p>\u3064\u3076\u3084\u304f\u305f\u3081\u306b\u5fc5\u8981\u306a\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u3001    <br \/>Twitter \u5074\u306b\u300c\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u4e00\u6642\u7684\u306a\u30c8\u30fc\u30af\u30f3\u300d\u3092\u767a\u884c\u3057\u3066\u3082\u3089\u3046\u30d7\u30ed\u30bb\u30b9\u3067\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001 Twitter \u306e \u300c <a href=\"https:\/\/api.twitter.com\/oauth\/request_token\">https:\/\/api.twitter.com\/oauth\/request_token<\/a> \u300d \u306b\u3001     <\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:756f3a14-2c56-4de2-b615-d3aea4f98575\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">https:\/\/api.twitter.com\/oauth\/request_token?oauth_consumer_key=oDcUp76alv6VctYvRx2g&amp;oauth_nonce=2179941686152750588&amp;oauth_signature=dC61tOolE2kkHbQilqY7zvrnoRA=&amp;oauth_signature_method=HMAC-SHA1&amp;oauth_timestamp=1322307481&amp;oauth_version=1.0<\/pre>\n<\/div>\n<p>\u3068\u3044\u3046\u3088\u3046\u306a\u30ea\u30af\u30a8\u30b9\u30c8\u3092 POST \u3067\u884c\u3044\u307e\u3059\u3002<\/p>\n<p>\u53c2\u8003\uff1a <a title=\"https:\/\/dev.twitter.com\/docs\/api\/1\/post\/oauth\/request_token\" href=\"https:\/\/dev.twitter.com\/docs\/api\/1\/post\/oauth\/request_token\">https:\/\/dev.twitter.com\/docs\/api\/1\/post\/oauth\/request_token<\/a><\/p>\n<p>&#160;<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:99702039-ec72-47ff-8873-8b61ceb95ae6\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: c#;\">Random rand = new Random();\nbyte[] nonce_b = new byte[64];\n\nrand.NextBytes(nonce_b);\n\nstring nonce = Math.Abs(BitConverter.ToInt64(nonce_b, 0)).ToString();\nlong unixtime = GetUNIXTime();\n\n\/\/\n\/\/ OAuth Signature \u751f\u6210\u306e\u305f\u3081\u306b\u3001\u305d\u308c\u4ee5\u5916\u3067\u4eee\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u6587\u5b57\u5217\u3092\u4f5c\u6210\u3059\u308b\u3002\n\/\/ \u3053\u306e\u969b\u3001\u5404\u30d1\u30e9\u30e1\u30fc\u30bf\u306f ABC \u9806\u306b\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\n\/\/\nstring signature_request = \"POST&amp;\" + UrlEncode(\"https:\/\/api.twitter.com\/oauth\/request_token\");\nsignature_request += \"&amp;\" + UrlEncode(MakeParamString(consumer_key, nonce, null, unixtime, null, null, null));\n\n\/\/\n\/\/ \u3061\u3083\u3093\u3068\u3057\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u6587\u5b57\u5217\u3092\u4f5c\u308b\u3002\n\/\/\nstring signature = GetSignature(consumer_secret, null, signature_request);\nstring param = MakeParamString(consumer_key, nonce, signature, unixtime, null, null, null);\n\n\/\/\n\/\/ \u554f\u3044\u5408\u308f\u305b\u3002\n\/\/\nHttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(\"https:\/\/api.twitter.com\/oauth\/request_token?\" + param);\nhwr.Method = \"POST\";\nWebResponse ret = hwr.GetResponse();\nverify_token = new StreamReader(ret.GetResponseStream()).ReadToEnd().Split('&amp;');\n\nret.Close();<\/pre>\n<\/div>\n<p>&#160;<\/p>\n<p>\u5148\u982d\uff15\u884c\u3067\u3001 UNIX \u6642\u9593\u306e\u53d6\u5f97\u3068\u3001\u30e9\u30f3\u30c0\u30e0\u306a\u6570\u5b57\u5217\u3092\u751f\u6210\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:2d489790-b04a-4a6e-b6dc-e2e8624d5dfe\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: c#;\">Random rand = new Random();\nbyte[] nonce_b = new byte[64];\n\nrand.NextBytes(nonce_b);\n\nstring nonce = Math.Abs(BitConverter.ToInt64(nonce_b, 0)).ToString();\nlong unixtime = GetUNIXTime();<\/pre>\n<\/div>\n<p>nonce_b \u306b\u751f\u6210\u3055\u308c\u305f 64byte \u5206\u306e\u6570\u5b57\u5217\u3092 Int64 \u578b\u306b\u5909\u63db\u3057\u3001 abs \u3067\u7d76\u5bfe\u5024\u306b\u5909\u63db\u3057\u305f\u5f8c\u3001<br \/>\n  <br \/>\u6587\u5b57\u5217\u306b\u5909\u63db\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:faa783d5-b92d-4c4a-9d88-0c57369b3bd7\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: c#;\">static long GetUNIXTime()\n{\n    return (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;\n}<\/pre>\n<\/div>\n<p>GetUNIXTime() \u95a2\u6570\u306f\u3053\u306e\u3088\u3046\u306a\u611f\u3058\u3002 UNIX Time \u306e\u5b9a\u7fa9\u305d\u306e\u307e\u307e\u3067\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u6b21\u306e\uff14\u884c\u3067\u30ea\u30af\u30a8\u30b9\u30c8\u6587\u5b57\u5217\u306e\u4f5c\u6210\u3092\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:162a7e58-bb8c-4bdf-89b7-ec7b92e3b96c\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: c#;\">\/\/\n\/\/ OAuth Signature \u751f\u6210\u306e\u305f\u3081\u306b\u3001\u305d\u308c\u4ee5\u5916\u3067\u4eee\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u6587\u5b57\u5217\u3092\u4f5c\u6210\u3059\u308b\u3002\n\/\/ \u3053\u306e\u969b\u3001\u5404\u30d1\u30e9\u30e1\u30fc\u30bf\u306f ABC \u9806\u306b\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\n\/\/\nstring signature_request = \"POST&amp;\" + UrlEncode(\"https:\/\/api.twitter.com\/oauth\/request_token\");\nsignature_request += \"&amp;\" + UrlEncode(MakeParamString(consumer_key, nonce, null, unixtime, null, null, null));\n\n\/\/\n\/\/ \u3061\u3083\u3093\u3068\u3057\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u6587\u5b57\u5217\u3092\u4f5c\u308b\u3002\n\/\/\nstring signature = GetSignature(consumer_secret, null, signature_request);\nstring param = MakeParamString(consumer_key, nonce, signature, unixtime, null, null, null);<\/pre>\n<\/div>\n<p>&#160;<\/p>\n<p>MakeParamString \u95a2\u6570\u306f\u6b21\u306e\u3088\u3046\u306a\u611f\u3058\uff1a<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:45e2872d-58ae-444d-8ca8-4c25cf0a1226\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: c#;\">\/\/ \u30d1\u30e9\u30e1\u30fc\u30bf\u6587\u5b57\u5217\u3092\u751f\u6210\nstatic string MakeParamString(string oauth_consumer_key, string oauth_nonce, string oauth_signature, long oauth_timestamp, string oauth_token, string oauth_verifier, string status)\n{\n    string param = \"oauth_consumer_key=\" + oauth_consumer_key + \"&amp;oauth_nonce=\" + oauth_nonce;\n\n    if (oauth_signature != null)\n        param += \"&amp;oauth_signature=\" + oauth_signature;\n\n    param += \"&amp;oauth_signature_method=HMAC-SHA1\" + \"&amp;oauth_timestamp=\" + oauth_timestamp;\n\n    if (oauth_token != null)\n        param += \"&amp;oauth_token=\" + oauth_token;\n\n    if (oauth_verifier != null)\n        param += \"&amp;oauth_verifier=\" + oauth_verifier;\n            \n    param += \"&amp;oauth_version=1.0\";\n\n    if (status != null)\n        param += \"&amp;status=\" + status;\n\n    return param;\n}<\/pre>\n<\/div>\n<p>\u3064\u307e\u308a\u3001<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:4324ad01-4935-4876-92bd-d7079a933dea\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">oauth_consumer_key=oDcUp76alv6VctYvRx2g&amp;oauth_nonce=1155890576800496532&amp;oauth_signature_method=HMAC-SHA1&amp;oauth_timestamp=1322307152&amp;oauth_version=1.0<\/pre>\n<\/div>\n<p>\u307f\u305f\u3044\u306a\u6587\u5b57\u5217\u3092\u751f\u6210\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u305f\u3060\u3053\u306e\u969b\u3001<strong><u>\u5404\u30d1\u30e9\u30e1\u30fc\u30bf\u306f ABC \u9806\u306b\u30bd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<br \/>\n      <br \/>\uff08\u3055\u308c\u3066\u3044\u306a\u3044\u3068\u53d7\u7406\u3055\u308c\u307e\u305b\u3093\u3002\uff09<\/u><\/strong><\/p>\n<p>&#160;<\/p>\n<p>UrlEncode \u95a2\u6570\u306f\u6b21\u306e\u3088\u3046\u306a\u611f\u3058\uff1a<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:64880a7b-f13b-417a-b071-37a732b66f62\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: c#;\">static string UrlEncode(string str)\n{\n    string s = HttpUtility.UrlEncode(str);\n    return _UrlEncodeUpper(s);\n}\n\nstatic string _UrlEncodeUpper(string str)\n{\n    int p = str.IndexOf(\"%\");\n    if (p != -1)\n    {\n        str = str.Substring(0, p) + str.Substring(p, 3).ToUpper() + _UrlEncodeUpper(str.Substring(p + 3));\n    }\n    return str;\n}<\/pre>\n<\/div>\n<p>&#160;<\/p>\n<p>\u8981\u306f\u3001.net \u306e\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u7528\u3044\u3066 URL \u30a8\u30f3\u30b3\u30fc\u30c9\u3092\u884c\u3063\u305f\u5f8c\u3001<br \/>\n  <br \/>\u518d\u8d77\u3092\u5229\u7528\u3057\u3066 %\u4ee5\u964d\u306e\uff12\u6587\u5b57\u3092\u5927\u6587\u5b57\u306b\u7f6e\u63db\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u3053\u3053\u307e\u3067\u3067\u3001 signature_request \u5909\u6570\uff08 Signature \u3092\u751f\u6210\u3059\u308b\u305f\u3081\u306e\u6587\u5b57\u5217 \uff09\u306b\u306f\u3001<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:906cc77d-0222-4af7-8fb8-30c3d248674b\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">POST&amp;https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&amp;oauth_consumer_key%3DoDcUp76alv6VctYvRx2g%26oauth_nonce%3D3863326961439002923%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1322307289%26oauth_version%3D1.0<\/pre>\n<\/div>\n<p><\/p>\n<p>\u3068\u3044\u3046\u3088\u3046\u306a\u6587\u5b57\u5217\u304c\u5165\u308a\u307e\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<p>GetSignature \u95a2\u6570\u306f\u6b21\u306e\u3088\u3046\u306a\u611f\u3058\uff1a<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:bcb33024-5289-4649-9230-8ec79fe2ca63\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: c#;\">static string GetSignature(string consumer_secret, string access_secret, string param)\n {\n    HMACSHA1 hmacsha1 = new HMACSHA1();\n    hmacsha1.Key = Encoding.ASCII.GetBytes(consumer_secret + \"&amp;\" + access_secret);\n    byte[] hash = hmacsha1.ComputeHash(Encoding.ASCII.GetBytes(param));\n            \n    return Convert.ToBase64String(hash);\n}<\/pre>\n<\/div>\n<p>HMACSHA1\u30af\u30e9\u30b9<br \/>\n  <br \/>( <a title=\"http:\/\/msdn.microsoft.com\/ja-jp\/library\/system.security.cryptography.hmacsha1(v=vs.80).aspx\" href=\"http:\/\/msdn.microsoft.com\/ja-jp\/library\/system.security.cryptography.hmacsha1(v=vs.80).aspx\">http:\/\/msdn.microsoft.com\/ja-jp\/library\/system.security.cryptography.hmacsha1(v=vs.80).aspx<\/a> )<\/p>\n<p>\u3053\u308c\u3092\u4f7f\u3063\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u3092\u3068\u308a\u307e\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u3053\u306e\u969b\u306e\u3001\u751f\u6210\u30ad\u30fc\u306f\u6b21\u306e\u6587\u5b57\u5217\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:1e163c0d-8c93-4818-8748-c5250c1dcd5f\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">[consumer_secret]&amp;[access_token_secret]<\/pre>\n<\/div>\n<p>\u3053\u306e\u30ad\u30fc\u3092\u7528\u3044\u3066\u5148\u307b\u3069 signature_request \u5909\u6570\u306b\u683c\u7d0d\u3055\u308c\u3066\u3044\u308b\u6587\u5b57\u5217\u306b\u3064\u3044\u3066\u30cf\u30c3\u30b7\u30e5\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u3053\u3053\u307e\u3067\u4f5c\u6210\u304c\u7d42\u308f\u3063\u305f\u3089\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u6587\u5b57\u5217\u3092\u751f\u6210\u3057\u76f4\u3057\u3066\u3001<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:2c334e5b-1093-4399-8c2c-b645e70ec0d3\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">oauth_consumer_key=oDcUp76alv6VctYvRx2g&amp;oauth_nonce=2336380648701352887&amp;oauth_signature=YVFCKdmCaljBmurjzFeJv5XCeRQ=&amp;oauth_signature_method=HMAC-SHA1&amp;oauth_timestamp=1322308083&amp;oauth_version=1.0<\/pre>\n<\/div>\n<p><a href=\"https:\/\/api.twitter.com\/oauth\/request_token\">https:\/\/api.twitter.com\/oauth\/request_token<\/a> \u306b\u6295\u3052\u308b\u3068\u3001 <\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:6ae08ec0-efb1-49f0-8a02-4f52dfe9c0fd\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">oauth_token=BIYmRMZKhdeZ4hale29OplkF0GjA881suM4g0wQ&amp;oauth_token_secret=cKmEjN45oulQd6mJ3j57T1hDeUL1npV5Zjzgxe7s4js&amp;oauth_callback_confirmed=true<\/pre>\n<\/div>\n<p><\/p>\n<p>\u3068\u3044\u3046\u6587\u5b57\u5217\u304c\u5e30\u3063\u3066\u304d\u307e\u3059\u306e\u3067\u3001<br \/>\n  <br \/>\u3053\u306e\u3046\u3061 oauth_token \u3068 oauth_token_secret \u304c <\/p>\n<p>\u305d\u308c\u305e\u308c Access Token \/ Secret \u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306b\u306a\u308b\u3001Request Token \/ Secret \u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<hr \/>\n<h4>\uff12\uff0e Access Token \u3092\u53d6\u5f97\u3059\u308b\u3002<\/h4>\n<p>\uff11\u3067\u53d6\u5f97\u3057\u305f Request Token \/ Secret \u3092\u5143\u306b\u3001<br \/>\n  <br \/>\u3064\u3076\u3084\u304f\u306e\u306b\u5fc5\u8981\u306a\u3001 Access token \/ Request \u3092\u53d6\u5f97\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3067\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001 \u30d6\u30e9\u30a6\u30b6\u3067\u30e6\u30fc\u30b6\u8a8d\u8a3c\u3092\u884c\u3044\u3001 PIN \u3092\u5165\u529b\u3057\u3066\u3082\u3089\u3063\u305f\u5f8c\u3001<br \/>\n  <br \/>\u3053\u308c\u3089\u306e\u30c7\u30fc\u30bf\u3092 <a href=\"https:\/\/api.twitter.com\/oauth\/access_token\">https:\/\/api.twitter.com\/oauth\/access_token<\/a> \u306b\u3001<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:3d914b69-ab2e-4f66-b202-73add2c13e5a\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">oauth_consumer_key=oDcUp76alv6VctYvRx2g&amp;oauth_nonce=3892287381380482420&amp;oauth_signature=tslyAJpnMxhZNfmusKxzH8YKfsY=&amp;oauth_signature_method=HMAC-SHA1&amp;oauth_timestamp=1322308659&amp;oauth_token=H5Awad7SVzUHGkA4tNCDEAi3YFBOvtXZ7z1WNNVCY&amp;oauth_verifier=0712398&amp;oauth_version=1.0<\/pre>\n<\/div>\n<p>\u3053\u306e\u3088\u3046\u306a\u6587\u5b57\u5217\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002<\/p>\n<p>\u53c2\u8003 \uff1a <a title=\"https:\/\/dev.twitter.com\/docs\/api\/1\/post\/oauth\/access_token\" href=\"https:\/\/dev.twitter.com\/docs\/api\/1\/post\/oauth\/access_token\">https:\/\/dev.twitter.com\/docs\/api\/1\/post\/oauth\/access_token<\/a><\/p>\n<p>&#160;<\/p>\n<p>&#160;<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:e9f30547-1477-4df9-a1f8-31231b68210c\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: c#;\">string request_token = \"\";\nstring request_secret = \"\";\n\n\/\/\n\/\/ \u30d6\u30e9\u30a6\u30b6\u958b\u3044\u3066\u8a8d\u8a3c\u3002\n\/\/\nforeach (string s in verify_token)\n{\n    int p = s.IndexOf(\"oauth_token=\");\n    if (p != -1)\n    {\n        request_token = s.Substring(p + \"oauth_token=\".Length);\n        break;\n    }\n}\nProcess.Start(\"https:\/\/twitter.com\/oauth\/authorize?oauth_token=\" + request_token);\n\n\/\/\n\/\/ PIN \u3092\u5165\u529b\u3055\u305b\u308b\u3002\n\/\/\nConsole.Write(\"\\nINPUT PIN : \");\nstring pin = Console.ReadLine();\n\nforeach (string s in verify_token)\n{\n    int p = s.IndexOf(\"oauth_token_secret=\");\n    if (p != -1)\n    {\n        request_secret = s.Substring(p + \"oauth_token_secret=\".Length);\n        break;\n    }\n}\n\n\/\/\n\/\/ \u4ee5\u4e0b Twitter \u3068\u3082\u304f\u3082\u304f\u901a\u4fe1\u3002\n\/\/\nRandom rand = new Random();\nbyte[] nonce_b = new byte[64];\n\nrand.NextBytes(nonce_b);\n\nstring nonce = Math.Abs(BitConverter.ToInt64(nonce_b, 0)).ToString();\nlong unixtime = GetUNIXTime();\n\n\/\/\n\/\/ Signature \u751f\u6210\u306e\u305f\u3081\u306e\u4e00\u6642\u7684\u306a\u30ea\u30af\u30a8\u30b9\u30c8\u6587\u5b57\u5217\u3092\u4f5c\u6210\u3002\n\/\/\nstring signature_request = \"POST&amp;\" + UrlEncode(\"https:\/\/api.twitter.com\/oauth\/access_token\");\nsignature_request += \"&amp;\" + UrlEncode(MakeParamString(consumer_key, nonce, null, unixtime, request_token, pin, null));\n\nstring signature = GetSignature(consumer_secret, request_secret, signature_request);\nstring param = MakeParamString(consumer_key, nonce, signature, unixtime, request_token, pin, null);\n\n\/\/\n\/\/ \u554f\u3044\u5408\u308f\u305b\u3002\n\/\/\nHttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(\"https:\/\/api.twitter.com\/oauth\/access_token?\" + param);\nhwr.Method = \"POST\";\nhwr.Headers.Add(\"Authorization\", \"OAuth\");\n\nWebResponse ret = hwr.GetResponse();\nverify_token = new StreamReader(ret.GetResponseStream()).ReadToEnd().Split('&amp;');\n\nret.Close();\n\nforeach (string s in verify_token)\n{\n    if (s.IndexOf(\"oauth_token=\") != -1)\n        access_token = s.Substring(s.IndexOf(\"=\") + 1);\n\n    if (s.IndexOf(\"oauth_token_secret=\") != -1)\n        access_secret = s.Substring(s.IndexOf(\"=\") + 1);\n}\n<\/pre>\n<\/div>\n<p>&#160;<\/p>\n<p>\u307e\u305a\u59cb\u3081\u306b\u3001<br \/>\n  <br \/>\u5148\u307b\u3069\u53d6\u5f97\u3057\u305f Request Token \u3092\u5143\u306b\u3001\u30d6\u30e9\u30a6\u30b6\u3067<\/p>\n<p><a title=\"https:\/\/twitter.com\/oauth\/authorize?oauth_token=\" href=\"https:\/\/twitter.com\/oauth\/authorize?oauth_token=[request_token\">https:\/\/twitter.com\/oauth\/authorize?oauth_token=[request_token<\/a>]<\/p>\n<p>\u306b\u30a2\u30af\u30bb\u30b9\u3055\u305b\u307e\u3059\u3002<\/p>\n<p><a href=\"http:\/\/mimumimu.net\/blog\/wp-content\/uploads\/2011\/11\/image53.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"http:\/\/mimumimu.net\/blog\/wp-content\/uploads\/2011\/11\/image_thumb53.png\" width=\"581\" height=\"456\" \/><\/a><\/p>\n<p>\u305d\u3046\u3057\u307e\u3059\u3068\u3001\u4eca\u56de\u306e\u5834\u5408\u3053\u3093\u306a\u306e\u304c\u51fa\u3066\u304d\u307e\u3059\u306e\u3067\u3001\u300c\u8a8d\u8a3c\u300d<\/p>\n<p><a href=\"http:\/\/mimumimu.net\/blog\/wp-content\/uploads\/2011\/11\/image54.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px\" title=\"image\" border=\"0\" alt=\"image\" src=\"http:\/\/mimumimu.net\/blog\/wp-content\/uploads\/2011\/11\/image_thumb54.png\" width=\"557\" height=\"298\" \/><\/a><\/p>\n<p>\u51fa\u3066\u304d\u305f\u6587\u5b57\u5217\u3092\u6253\u3063\u3066\u3082\u3089\u3046\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u3042\u3068\u306f\u305d\u308c\u3092\u5143\u306b\u3001pin \u3092 oauth_verifier=pin \u3068\u3057\u3066\u4ed8\u3051\u52a0\u3048\u3066\u3001\u6b21\u306e\u3088\u3046\u306a\u6587\u5b57\u5217\u3092\u4f5c\u308a\u3001<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:db6f632f-36cf-43f0-abe8-022cff68615b\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">POST&amp;https%3A%2F%2Fapi.twitter.com%2Foauth%2Faccess_token&amp;oauth_consumer_key%3DoDcUp76alv6VctYvRx2g%26oauth_nonce%3D7576447428639206328%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1322309766%26oauth_token%3D9WSdHNafGF0uRHbkgW7i1jDaMRyVRggwg1T6wzElTI%26oauth_verifier%3D9525882%26oauth_version%3D1.0<\/pre>\n<\/div>\n<p>\u4e0a\u8a18\u306e\u6587\u5b57\u5217\u304b\u3089 Signature \u3092\u751f\u6210\u3057\u3066\u3001\u6b21\u306e\u3088\u3046\u306b\u30d1\u30e9\u30e1\u30fc\u30bf\u6587\u5b57\u5217\u3092\u4f5c\u308a\u76f4\u3057\u3001<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:2af82fa8-cbed-494f-acbe-8eca54431bb1\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">oauth_consumer_key=oDcUp76alv6VctYvRx2g&amp;oauth_nonce=7576447428639206328&amp;oauth_signature=Ft4AgiIaRONzOkHmJ1P9IAE3N7s=&amp;oauth_signature_method=HMAC-SHA1&amp;oauth_timestamp=1322309766&amp;oauth_token=9WSdHNafGF0uRHbkgW7i1jDaMRyVRggwg1T6wzElTI&amp;oauth_verifier=9525882&amp;oauth_version=1.0<\/pre>\n<\/div>\n<p><a href=\"https:\/\/api.twitter.com\/oauth\/access_token\">https:\/\/api.twitter.com\/oauth\/access_token<\/a> \u306b\u6295\u3052\u308b\u3068\u3001<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:06fcf338-24de-4537-8c92-570383204a22\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">oauth_token=77219798-*************&amp;oauth_token_secret=*****************************&amp;user_id=77219798&amp;screen_name=mimura1133\n<\/pre>\n<\/div>\n<p>\u3068\u3044\u3046\u3088\u3046\u306a\u6587\u5b57\u5217\u304c\u5e30\u3063\u3066\u304d\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u969b\u306e oauth_token \u304a\u3088\u3073 oauth_token_secret \u306f\u3001<br \/>\n  <br \/>Access Token \u304a\u3088\u3073 Access Secret \u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\uff08\u3053\u306e\u5024\u306f\u8868\u306b\u51fa\u308b\u3068\u5927\u5909\u885b\u751f\u4e0a\u3088\u308d\u3057\u304f\u306a\u3044\u306e\u3067\u3001\u4f0f\u305b\u5b57\u306b\u3057\u3066\u3044\u307e\u3059\u3002\uff09<\/p>\n<p>&#160;<\/p>\n<hr \/>\n<h4>\uff13\uff0e\u3064\u3076\u3084\u304f\u3002<\/h4>\n<p>\u3064\u3076\u3084\u304d\u307e\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u306f\u3001 <a href=\"https:\/\/api.twitter.com\/1\/status\/update.xml\">https:\/\/api.twitter.com\/1\/status\/update.xml<\/a> \u306b\u3001<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:7abf2160-e6d9-4938-9c07-5dec28dc4b69\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">Authorization: OAuth oauth_consumer_key=\"oDcUp76alv6VctYvRx2g\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1322310097\",oauth_nonce=\"1334809891491345235\",oauth_version=\"1.0\",oauth_token=\"77219798-********************\",oauth_signature=\"**********************\",<\/pre>\n<\/div>\n<p>\u3068\u3044\u3046\u3088\u3046\u306a\u30d8\u30c3\u30c0\u3092\u4ed8\u3051\u3066\u3001<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:6f78271a-bf3e-49d1-bad4-045fc9431c67\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">status=%E3%82%B2%E3%82%BD%E3%83%BC%E3%82%B2%E3%82%BD%E3%83%BC&amp;include_entities=true<\/pre>\n<\/div>\n<p>\u3068\u3044\u3046\u3088\u3046\u306a\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u305f\u3060\u4eca\u56de\u306fURL \u306b\u304f\u3063\u3064\u3051\u308b\u306e\u3067\u306f\u306a\u304f\u3001<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:6d069766-5d1e-4e19-a436-06fd04a52e38\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">POST https:\/\/api.twitter.com\/1\/statuses\/update.xml HTTP\/1.1\nContent-Type: application\/x-www-form-urlencoded\nHost: api.twitter.com\nAuthorization: OAuth oauth_consumer_key=\"iOQHfiCUsyOyamW8JJ8jg\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1322297289\",oauth_nonce=\"5194364\",oauth_version=\"1.0\",oauth_token=\"77219798-**********************\",oauth_signature=\"***********************\",\nContent-Length: 110\n\nstatus=%E3%81%A7%E3%82%93%E3%81%A7%E3%82%89%E3%82%8A%E3%82%85%E3%83%BC%E3%81%B0%E3%83%BC&amp;include_entities=true<\/pre>\n<\/div>\n<p>\u3053\u3093\u306a\u611f\u3058\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:22437da6-c9e3-4437-bafe-baec7af53db4\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: c#;\">Random rand = new Random();\nbyte[] nonce_b = new byte[64];\n\nrand.NextBytes(nonce_b);\n\nstring nonce = Math.Abs(BitConverter.ToInt64(nonce_b, 0)).ToString();\nlong unixtime = GetUNIXTime();\n\nstring tweet_data = UrlEncode(tweet_text);\n\nstring signature_request = \"POST&amp;\" + UrlEncode(\"https:\/\/api.twitter.com\/1\/statuses\/update.xml\");\nsignature_request += \"&amp;include_entities%3Dtrue%26\" + UrlEncode(MakeParamString(consumer_key, nonce, null, unixtime, access_token, null, tweet_data));\nstring signature = GetSignature(consumer_secret, access_secret, signature_request);\n\nstring header_param = \"OAuth oauth_consumer_key=\\\"\" + UrlEncode(consumer_key) + \"\\\",oauth_signature_method=\\\"HMAC-SHA1\\\",\" +\n                        \"oauth_timestamp=\\\"\" + unixtime + \"\\\",oauth_nonce=\\\"\" + UrlEncode(nonce) + \"\\\",\" +\n                        \"oauth_version=\\\"1.0\\\",oauth_token=\\\"\" + UrlEncode(access_token) + \"\\\",\" +\n                        \"oauth_signature=\\\"\" + UrlEncode(signature) + \"\\\",\";\n\nHttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(\"https:\/\/api.twitter.com\/1\/statuses\/update.xml\");\nhwr.Method = \"POST\";\nhwr.ServicePoint.Expect100Continue = false;\nhwr.Headers.Add(HttpRequestHeader.Authorization, header_param);\nhwr.ContentType = \"application\/x-www-form-urlencoded\";\nvar s = new StreamWriter(hwr.GetRequestStream());\ns.Write(\"status=\" + tweet_data + \"&amp;include_entities=true\");\ns.Close();\n\nWebResponse ret = hwr.GetResponse();<\/pre>\n<\/div>\n<p>&#160;<\/p>\n<p>\u307e\u305a\u306f\u3001\u3064\u3076\u3084\u304f\u5185\u5bb9\u3092 URLEncode \u3057\u3066\u3001\u9001\u4fe1\u3059\u308b\u30c7\u30fc\u30bf\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>\u6b21\u306b\u3001 \u201c status=[\u3064\u3076\u3084\u304f\u4e2d\u8eab] \u201c\u3068\u3057\u3066\u8ffd\u52a0\u3057\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u6587\u5b57\u5217\u3092\u4f5c\u308a\u3001 Signature \u3092\u8a08\u7b97\u3057\u307e\u3059\u3002<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:f39d0c6f-5b56-4e64-aa6a-156df0cb975e\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">POST&amp;https%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fupdate.xml&amp;include_entities%3Dtrue%26oauth_consumer_key%3DoDcUp76alv6VctYvRx2g%26oauth_nonce%3D1334809891491345235%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1322310097%26oauth_token%3D77219798-****************************%26oauth_version%3D1.0%26status%3D%25E3%2582%25B2%25E3%2582%25BD%25E3%2583%25BC%25E3%2582%25B2%25E3%2582%25BD%25E3%2583%25BC<\/pre>\n<\/div>\n<p>\u6b21\u306b\u3001HTTP \u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30d8\u30c3\u30c0\u306b\u304f\u3063\u3064\u3051\u308b\u3001\u8a8d\u8a3c\u60c5\u5831\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:a9660ffb-3f10-480f-be3f-8dc8a68327a0\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: c#;\">                string header_param = \"OAuth oauth_consumer_key=\\\"\" + UrlEncode(consumer_key) + \"\\\",oauth_signature_method=\\\"HMAC-SHA1\\\",\" +\n                                      \"oauth_timestamp=\\\"\" + unixtime + \"\\\",oauth_nonce=\\\"\" + UrlEncode(nonce) + \"\\\",\" +\n                                      \"oauth_version=\\\"1.0\\\",oauth_token=\\\"\" + UrlEncode(access_token) + \"\\\",\" +\n                                      \"oauth_signature=\\\"\" + UrlEncode(signature) + \"\\\",\";<\/pre>\n<\/div>\n<p>\u6587\u5b57\u5217\u3068\u3057\u3066\u306f\u3001<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:39e9496b-d967-4a29-a9d5-62970442cee8\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">OAuth oauth_consumer_key=\"oDcUp76alv6VctYvRx2g\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1322310097\",oauth_nonce=\"1334809891491345235\",oauth_version=\"1.0\",oauth_token=\"77219798-*****************\",oauth_signature=\"****************\",<\/pre>\n<\/div>\n<p>\u3053\u306e\u3088\u3046\u306b\u3001<\/p>\n<p>hogehoge=&quot;gesogeso&quot;<\/p>\n<p>\u307f\u305f\u3044\u306a\u6587\u5b57\u5217\u3092\u3001\u30ab\u30f3\u30de\u3067\u533a\u5207\u3063\u305f\u5f62\u306e\u6587\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u3053\u306e\u969b\u3001 Signature \u3092 URLEncode \u3057\u3066\u3042\u3052\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u30a8\u30f3\u30b3\u30fc\u30c9\u3092\u5fd8\u308c\u305f\u308a\u3001\u30d8\u30c3\u30c0\u306b\u4ed8\u3051\u308b\u6587\u5b57\u5217\u304c\u6b63\u3057\u304f\u7121\u304b\u3063\u305f\u308a\u3059\u308b\u3068\u3001<br \/>\n  <br \/>Invalid \u2026 \u3068\u3044\u3046\u6587\u5b57\u5217\u304c\u5e30\u3063\u3066\u304d\u305f\u308a\u3001<\/p>\n<p>Could not authenticase with OAuth.<\/p>\n<p>\u3068\u3044\u3046\u30a8\u30e9\u30fc\u304c\u3001\u9001\u4fe1\u3057\u305f\u3068\u304d\u306b Twitter \u5074\u304b\u3089\u5e30\u3063\u3066\u304d\u307e\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u5168\u90e8\u751f\u6210\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001<\/p>\n<p><a href=\"https:\/\/api.twitter.com\/1\/status\/update.xml\">https:\/\/api.twitter.com\/1\/status\/update.xml<\/a> \u306b\u5bfe\u3057\u3066\u9001\u4fe1\u3059\u308b\u969b\u3001<\/p>\n<p>Header \u306b\u3064\u3044\u3066\u4ee5\u4e0b\u306e\u8981\u7d20\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<\/p>\n<p>ContentType \u306b application\/x-www-form-urlencoded \u3092\u6307\u5b9a\u3057\u3001<br \/>\n  <br \/>Authorization \u306b \u5148\u307b\u3069 header_param \u306b\u751f\u6210\u3057\u305f\u6587\u5b57\u5217\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:7a2dd151-c5fd-4aa0-adcd-cc8c64037d39\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: c#;\">hwr.Headers.Add(HttpRequestHeader.Authorization, header_param);\nhwr.ContentType = \"application\/x-www-form-urlencoded\";<\/pre>\n<\/div>\n<p><\/p>\n<p>\u305d\u3057\u3066\u3001 Message \u90e8\u5206\u306b<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:f5962001-ad50-4802-868e-680d720175d5\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: text;\">status=[\u3064\u3076\u3084\u304f\u5185\u5bb9\u3092 URL \u30a8\u30f3\u30b3\u30fc\u30c9\u3057\u305f\u3082\u306e]&amp;include_entities=true<\/pre>\n<\/div>\n<p>\u3092\u4ed8\u3051\u3066\u9001\u4fe1\u3057\u307e\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u5168\u90e8\u5b8c\u4e86\u3059\u308b\u3068\u3001\u3061\u3083\u3093\u3068\u3064\u3076\u3084\u304b\u308c\u307e\u3059\u3002<\/p>\n<p>&#160;<\/p>\n<p>\u3068\u3044\u3046\u3053\u3068\u3067\u3001\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306f\u3001\u524d\u306e\u8a18\u4e8b\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n  <br \/><a href=\"http:\/\/mimumimu.net\/blog\/2011\/11\/26\/twitter-%e3%81%ae-oauth-1-0-%e8%aa%8d%e8%a8%bc%e3%82%92%e8%87%aa%e5%88%86%e3%81%a7%e3%82%b3%e3%83%bc%e3%83%89%e6%9b%b8%e3%81%84%e3%81%a6%e3%82%84%e3%81%a3%e3%81%a6%e3%81%bf%e3%81%9f%e3%80%82\/\">Twitter \u306e OAuth 1.0 \u8a8d\u8a3c\u3092\u81ea\u5206\u3067\u30b3\u30fc\u30c9\u66f8\u3044\u3066\u3084\u3063\u3066\u307f\u305f\u3002<\/a><\/p>\n<p>&#160;<\/p>\n<p>\u3067\u306f\u3067\u306f\u30fc\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u307f\u3080\u3089\u3067\u3059\u3002 \u3072\u3068\u307e\u305a\u3001\u304a\u3079\u3093\u304d\u3087\u30fc\u3068\u3044\u3046\u3053\u3068\u3067\u3001\u5f8c\u304b\u3089\u3082\u5206\u304b\u308b\u3088\u3046\u306b\u3001 \u5909\u6570\u3092\u591a\u304f\u4f7f\u3063\u3066\u6587\u5b57\u5217\u51fa\u529b\u3092\u3075\u3093\u3060\u3093\u306b\u51fa\u3057\u306a\u304c\u3089\u3002 &#160; \u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u304c\u3001\u6d77\u304b\u3089\u6765\u305f\u4fb5\u7565\u8005\u306b\u4fb5\u7565\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001 \u305d\u3093\u306a\u3082\u306e\u5168\u304f\u6c17\u306b\u3057\u306a\u3044 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[103,106,105,104],"class_list":["post-3822","post","type-post","status-publish","format-standard","hentry","category-other","tag-oauth-1-0","tag-twitter","tag-105","tag-104"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/posts\/3822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/comments?post=3822"}],"version-history":[{"count":0,"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/posts\/3822\/revisions"}],"wp:attachment":[{"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/media?parent=3822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/categories?post=3822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mimumimu.net\/blog\/wp-json\/wp\/v2\/tags?post=3822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}