ReactiveOAuth ではてなの OAuth 認証を利用するお話し
- ネタ元:ReactiveOAuthではてなOAuth認証 (Neutral Scent)
個人的にも近い将来はてな OAuth を利用する予定があったので調べてみました。
twitter でもつぶやきましたが、
と云う事の様です。
最終的には @neuecc さんに ReactiveOAuth 自体を修正していただくのが良いとは思いますが、とりあえず利用者側で暫定対応するならこんな感じでいけるかと。
var authorizer = new OAuthAuthorizer(ConsumerKey, ConsumerSecret); authorizer.GetRequestToken("https://www.hatena.com/oauth/initiate", new Parameter("oauth_callback", "oob")) .Select(res => res.Token) .ObserveOnDispatcher() .Subscribe(token => { requestToken = new RequestToken(UrlDecode(token.Key), UrlDecode(token.Secret)); var url = authorizer.BuildAuthorizeUrl("https://www.hatena.ne.jp/touch/oauth/authorize", token); webBrowser1.Navigate(new Uri(url)); });
※ OAuthAuthorizer.BuildAuthorizeUrl(string, RequestToken) はトークンをエンコードせずに URL 構築するので、デコードしていないトークンを引き渡す必要があります。。。
- UrlDecode メソッド
private string DecodeUrl(string stringToUnescape) { return Uri.UnescapeDataString(stringToUnescape.Replace("%29", ")") .Replace("%28", "(") .Replace("%27", "'") .Replace("%2A", "*") .Replace("%21", "!")); }