xamarinでDropBox連携チュートリアル


xamari.formでDropboxApiを利用します。
チュートリアルを参考に試してみました。

前提

開発者向けのDropBox連携(≠ユーザーのDropBoxに連携では無い)
環境:VisualStudio for mac

ソース
https://github.com/xamarin-okinawa/sample-dropbox

下記トークンをDropBoxで取得したGenerated access tokenに書き換えれば動作します。
DropBoxSamplePage.xaml.cs

private static string _GeneratedAccessToken = "Input Generated Access Token";

1.DropBoxでApp登録

アクセスキーが必要なのでDropBoxでAPP登録をしてGenerated access tokenを取得します。

2. プロジェクトを作成

いつも通り空のプロジェクトを作成

3. パッケージをインストール

チュートリアルのインストールに従ってDropBoxAPIをインストールします。

4. DropBoxAPI接続確認

必要はパッケージは揃ったのでチュートリアルソースを元にサンプルを作成します。

.xaml
<Button x:Name="buttonConfim" Text="接続確認" />
.cs
        public DropBoxSamplePage()
        {
            InitializeComponent();

            buttonConfim.Clicked += ButtonConfim_Clicked;
        }

        void ButtonConfim_Clicked(object sender, EventArgs e)
        {
            var task = Task.Run((Func<Task>)Confirm);
            task.Wait();
        }

        /// <summary>
        /// DropBox接続確認
        /// </summary>
        /// <returns>The confirm.</returns>
        private async Task Confirm()
        {
            using (var dbx = new DropboxClient(_GeneratedAccessToken))
            {
                var full = await dbx.Users.GetCurrentAccountAsync();
                System.Diagnostics.Debug.WriteLine("{0} - {1}", full.Name.DisplayName, full.Email);
            }
        }

これで画面を立ち上げてボタンクリックで確認。

アプリケーション出力で開発者の情報が確認できればOK

4. テキストファイルアップロード

チュートリアルのもうひとつ。
ファイルのアップロードを試してみます。

.xaml
        <Entry x:Name="entText" Placeholder="文字を入力してください" />
        <Button x:Name="buttonOK" Text="ファイル更新" />
.cs
        public DropBoxSamplePage()
        {
            InitializeComponent();


            buttonOK.Clicked += ButtonOK_Clicked;
            buttonConfim.Clicked += ButtonConfim_Clicked;
        }

        void ButtonOK_Clicked(object sender, System.EventArgs e)
        {
            var task = Task.Run((Func<Task>)Upload);
            task.Wait();
        }

        /// <summary>
        /// DropBoxアップロード
        /// </summary>
        /// <returns>The confirm.</returns>
        private async Task Upload()
        {
            string folderName = "datas";
            string fileName = "otameshi.txt";
            string content = entText.Text;

            using (var dbx = new DropboxClient(_GeneratedAccessToken))
            {

                using (var mem = new MemoryStream(Encoding.UTF8.GetBytes(content)))
                {
                    var updated = await dbx.Files.UploadAsync(
                        "/" + folderName + "/"  + fileName,
                        WriteMode.Overwrite.Instance,
                        body: mem);
                    System.Diagnostics.Debug.WriteLine("Saved {0} rev {1}", fileName, updated.Rev);
                }
            }
        }

画面を起動して確認

ファイル更新ボタンをクリックしDropboxでファイルが作成されていればOK

まとめ

今回は開発者のDropBoxの連携でしたが、
次はユーザーのDropBox認証について検証します。