2016-09-27 7 views
1

私のUWPアプリケーションでは、Googleドライブをストレージの場所として使用しようとしています。私はGoogleによって提供されたquickstartで仕事を始めました。空のUWPプロジェクトにコードをコピーし、出力コードの一部(Console.Writelinetextbox.appendメソッドに変更)を作成しようとしました。これは、ビルドに失敗し、エラーを報告します。UWPアプリケーションでのGoogleドライブ.NET APIの使用

Cannot find type System.ComponentModel.ExpandableObjectConverter in module System.dll

私は、Windows 10およびVS 2015を実行していると私はNuGet経由SDKをインストールしました。クイックスタートのサンプルコードはコンソールアプリケーションで動作します。それは問題を抱えているUWPアプリケーションです。

UWPアプリケーションの場合、クイックスタートコードをボタンクリック方式で入力します。これは、APIが実際にクイックスタートで指定されたコードとは少し異なるuwpアプリケーション用の非同期メソッドを実際に持っているためです。

に含まれるもの:

using System; 
using System.Collections.Generic; 
using System.IO; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
using Google.Apis.Auth.OAuth2; 
using Google.Apis.Drive.v3; 
using Google.Apis.Drive.v3.Data; 
using Google.Apis.Services; 
using Google.Apis.Util.Store; 
using System.Threading; 

ボタン方式:

private async void button_Click(object sender, RoutedEventArgs e) 
     { 
      UserCredential credential; 

      using (var stream = 
       new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) 
      { 
       string credPath = ""; //System.Environment.GetFolderPath(
              //System.Environment.SpecialFolder.Personal); 
       credPath = Path.Combine(credPath, ".credentials/drive-dotnet-quickstart.json"); 

       credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
        new Uri("ms-appx:///Assets/client_secrets.json"), 
        Scopes, 
        "user", 
        CancellationToken.None); 
       //Console.WriteLine("Credential file saved to: " + credPath); 
      } 

      // Create Drive API service. 
      var service = new DriveService(new BaseClientService.Initializer() 
      { 
       HttpClientInitializer = credential, 
       ApplicationName = ApplicationName, 
      }); 

      // Define parameters of request. 
      FilesResource.ListRequest listRequest = service.Files.List(); 
      listRequest.PageSize = 10; 
      listRequest.Fields = "nextPageToken, files(id, name)"; 

      // List files. 
      IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute() 
       .Files; 
      textBox.Text += "Files:\n"; 
      if (files != null && files.Count > 0) 
      { 
       foreach (var file in files) 
       { 
        textBox.Text += (file.Name + file.Id + "\n"); 
       } 
      } 
      else 
      { 
       textBox.Text += ("No files found."); 
      } 
     } 

それはクライアントシークレットをロードするためのコードが含まれていませんよう、アプリケーションがコンパイルされると、テストコードは動作しませんが。私はコードをテストすることができなかったので、これは私が提供できるすべてです。

半関連性がある以外はpostがあります。ただし、回答がうまくいかず、投稿が4年間死んでしまったという点が異なります。私は、特にクイックスタートのようにGoogleチームにタグを付ける新しい投稿を作成したかったのです。

私の具体的な質問は:この問題を回避する方法はありますか、それとも間違っているのですか?

答えて

1

@Vincentに同意すると、UWPアプリはCOMをベースとして使用し、そこからビルドします。すべての.Net APIがUWPアプリで使用できるわけではありません。このSDKは.Net APIに基づいているため、コンソールアプリはOKですが、UWPアプリはダウンしています。これらの違いについては、great answerがあります。しかし、

"You will need an UWP SDK from Google to build an UWP applications."

は、私はただの運なしでこれを検索してみましたが、ここで提案され、あなたがドライブのAPIにリクエストをするためにJavaScriptを使用することができます。これを行うには、JavaScript Quickstartを参照してください。その後、あなたはそれをWebホストのUWPアプリに変えることができます。詳しくは、Convert your web application to a Universal Windows Platform (UWP) appを参照してください。

おそらく作業を簡単にする別の方法は、Rest APIを使用してHTTPリクエストを送信することです。API Referenceも参照してください。

@Vincentのような最終的な提案によると、SDKコードにアクセスすることができれば、それをUWPに適応させることもできます。つまり、このSDKのソースコードを変更する必要があります。

+0

感謝をされていなかったことを確認いただき、誠にありがとうございます。私は、残りのAPIのルートを試してみましょう - それはそれで回り込むことは決して遅くない方が良いと思います。私の質問に答えていただきありがとうございます。 – Nibious

1

Windowsストア/ UWPアプリケーションを構築するために使用される.Netフレーバは、完全な.Netフレームワークよりも少ない機能を備えています。残念ながら、ExpandableObjectConverterオブジェクトはUWPアプリケーションでは使用できません。

UWPアプリケーションを構築するには、GoogleのUWP SDKが必要です。

SDKコードにアクセスできる場合は、UWP用にSDKコードを修正することもできます。

+0

私はUWP SDKを見つけることができませんでした。しかし解決策を見つける手助けをして、私は完全に@ヴィンセントの答えの上に構築するための馬鹿:-P – Nibious

関連する問題