先日、こんな要望を頂きました。
@kazuakix mio Couponの要望です。よろしくお願いいたします。
https://t.co/GLV5UK2dXj
— Ovis (@Pandora_Ovis) 2014, 9月 18
あの...ワタクシ、例のアレ進めたいんですけど...
でも、例のアレちょっと行き詰ってるし、気晴らしにこっちを作ってみる事にしました。
API を確認する。
Windows Phone 7 向けに出している mio Coupon は IIJmio の会員向けページをスクレイピングするという超力技的な作りになっています。
でも今では IIJ さんが API を用意してくれているので、こちらを使うことにしましょう。
ここで唯一問題になりそうなのは最初にアクセストークンを受け取る部分。
「認証サーバーからリダイレクト URI にアクセストークンを含めてリダイレクト」と書かれていますので、Web ブラウザからアプリを起動してもらう事になります。
ちなみにリダイレクト URI はこんな感じに設定できます。http://~ に限らず自由に設定できるのがポイントですね。
URI プロトコルによる呼び出しに対応する
以前の Silverlight の頃は UriMapper クラスあたりで対応していたのですが、WinRT になってやり方が変わっていました。詳細は以下のドキュメントに解説があります。
まずは Phone プロジェクトの Package.appxmanifest の「宣言」タブを開いて、使用可能な宣言で「プロトコル」を選んで 名前に上で設定した URI のスキーム名 (miocoupon) だけを指定して保存しておきます。
続いて App.xaml.cs で OnActivated メソッドをオーバーライドします。
protected override void OnActivated(IActivatedEventArgs args) { if (args.Kind == ActivationKind.Protocol) { // Uri プロトコルによる呼び出しの場合 var paeArgs = args as ProtocolActivatedEventArgs; var uri = paeArgs.Uri; // 呼び出された Uri } }
これで認証サーバーからリダイレクトされたときにアプリが起動するようになります。
ちなみに、このときの Uri にはこんな値が入っていました。
miocoupon://callback/#access_token=xxxxxxxxxx&state=hoge....
後はここからアクセス トークンを読み取れば先に進めますね。