実は自分のエントリやブクマがブクマされたことを検索するのが難しいのではないかと危惧しているのですが、とりあえずOAuth認証な。OAuthだかAOuthだかわからなくなるレベルのババァが書いてるから油断するなよw
Visual Studio Community 2017
ダウンロードとインストールくらいはできるぜ←インストール1回失敗したw
んで、新しいプロジェクト->Windowsフォームアプリ選択
ツール-> NuGet->何とかの管理->AsyncOAuthを検索してインストール
クラス追加してまるっとコピー
github.com
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Diagnostics; using System.IO; using System.Net.Http; using AsyncOAuth; namespace WindowsFormsApp1 { // a sample of hatena client public class HatenaClient { readonly string consumerKey; readonly string consumerSecret; readonly AccessToken accessToken; public HatenaClient(string consumerKey, string consumerSecret, AccessToken accessToken) { this.consumerKey = consumerKey; this.consumerSecret = consumerSecret; this.accessToken = accessToken; } // sample flow for Hatena authroize public async static Task<AccessToken> AuthorizeSample(string consumerKey, string consumerSecret) { // create authorizer var authorizer = new OAuthAuthorizer(consumerKey, consumerSecret); // get request token var tokenResponse = await authorizer.GetRequestToken( "https://www.hatena.com/oauth/initiate", new[] { new KeyValuePair<string, string>("oauth_callback", "oob") }, new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("scope", "read_public,write_public") })); var requestToken = tokenResponse.Token; var pinRequestUrl = authorizer.BuildAuthorizeUrl("https://www.hatena.ne.jp/oauth/authorize", requestToken); // open browser and get PIN Code Process.Start(pinRequestUrl); // enter pin Console.WriteLine("ENTER PIN"); var pinCode = Console.ReadLine(); // get access token var accessTokenResponse = await authorizer.GetAccessToken("https://www.hatena.com/oauth/token", requestToken, pinCode); // save access token. var accessToken = accessTokenResponse.Token; Console.WriteLine("Key:" + accessToken.Key); Console.WriteLine("Secret:" + accessToken.Secret); return accessToken; } HttpClient CreateOAuthClient() { return OAuthUtility.CreateOAuthClient(consumerKey, consumerSecret, accessToken); } public async Task<string> GetMy() { var client = CreateOAuthClient(); var json = await client.GetStringAsync("http://n.hatena.com/applications/my.json"); return json; } public async Task<string> AppicationStart() { var client = CreateOAuthClient(); var response = await client.PostAsync("http://n.hatena.com/applications/start", new StringContent("", Encoding.UTF8)); return await response.Content.ReadAsStringAsync(); } } }
フォームにボタンを適当においてダブルクリック
基本こぴぺ
blog.daruyanagi.jp
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Diagnostics; using System.IO; using System.Net.Http; using AsyncOAuth; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private async void button1_Click(object sender, EventArgs e) { //登録 //OAuth Consumer Keyプライベート 教えられない1 //OAuth Consumer Secretプライベート 教えられない2 //OAuth認証URL //Temporary Credential Request URL https://www.hatena.com/oauth/initiate //Resource Owner Authorization URL(PC) https://www.hatena.ne.jp/oauth/authorize //Token Request URL https://www.hatena.com/oauth/token var authorizer = new OAuthAuthorizer("教えられない1", "教えられない2"); var callbackUri = "oob"; var requestTokenResponse = await authorizer.GetRequestToken( "https://www.hatena.com/oauth/initiate", new[] { new KeyValuePair<string, string>( "oauth_callback", callbackUri ) }, new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>( "scope", "read_public,write_public" ) }) ); var requestToken = requestTokenResponse.Token; var authorizeUrl = authorizer.BuildAuthorizeUrl( "https://www.hatena.ne.jp/touch/oauth/authorize", requestToken); //標準のブラウザで開いて表示する System.Diagnostics.Process.Start(authorizeUrl); } } }
これで実行するとハッシュタグ初期化? してねぇ!! って例外を投げられる
main関数に初期化コードコピペ
using System; using System.Security.Cryptography; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; using AsyncOAuth; namespace WindowsFormsApp1 { static class Program { /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { OAuthUtility.ComputeHash = (key, buffer) => { using (var hmac = new HMACSHA1(key)) { return hmac.ComputeHash(buffer); } }; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }
ボタンぽち、で
やったねー!!