C#からOneDrive API(2) Xamarinで認証

あすかです。

前回はOneDrive公式SDKを使って、UWPから認証してみました。

kmycode.hatenablog.jp

今回はXamarinから認証してみます。

設計

前回UWPで作った時の設計はこんな感じでしたね。

f:id:kmynews:20170312105003p:plain

実は、これはXamarin.Formsでもそのまま通用する設計になっています。
XamarinもUWPとほとんど同じコードで構いません。前回のコードから少しだけ修正も入っていますが、大した差ではありません。
中身について詳しくは前回の記事を参照してください。

でもスマホの小さな画面で認証と認証結果を同時に表示させるのはちょっときついので、メイン画面と認証画面を分けます。

f:id:kmynews:20170319095929p:plain

こうします。
今回作るのは、MainPageAuthPageが中心です。
ViewModelにも修正入ってますが細かいのでgitのログへどうぞ(´・ω・`)

作って実行

f:id:kmynews:20170319105143p:plain

このボタンをクリックすると、

f:id:kmynews:20170319105534p:plain

認証画面があらわれまして、
ここで「はい」をタップして、真っ白なページが出てしばらくたったら自動的に前のページに戻ります。

f:id:kmynews:20170319105659p:plain

成功しました。わーいわーい

はいおわり

UWPでViewModelとModelを書いたら、Xamarin.Formsでもほとんど同じコードで使いまわせました。
修正するのはViewだけです。
これがMVVMのいいところですね!

(余談)MSA Auth Adapter

尺が余ったので(?)余談でお茶を濁します。

OneDrive公式SDKは認証のとこがめんどい自分で書くしかないと前回の記事で書きましたが、
実はMSA Auth Adapterというのが提供されていまして、これを使えば楽に認証部分書くことができるらしいです。

github.com

でもこれ、PCLと書いているのですが、なぜか私がやったときはWPFとUWPにはインスコできて、Xamarinには入りませんでした。
ほんとなんでなんでしょう。
なので今回は、Xamarin.Formsを意識してこのライブラリは不採用、UWPもそれにつられて不採用、という形にしました。
公式SDKはXamarinにも入れられるPCLなのに、もったいない。

ああまだ尺が余ってる

まとめ

尺が余りました。

次回は、OneDrive APIを使って、簡単なファイルエクスプローラを作ってみます。
普通はファイル読み書きを先にすべきかもしれませんが、OneDriveではフォルダ・ファイルまわりでちょっとクセがありますので、そのあたりの話にもっていけたらなと思います。

kmycode.hatenablog.jp