2012-02-21 19 views
2

私はWebアプリケーションで作業しており、ユーザーに個人用Dropboxアカウントを接続できるようにしたいと考えています。 ファイルとフォルダのブラウザをビルドしますが、最初にアクセスできるようにします。DropboxへのASP.NET Webアプリケーションの接続

私は自分のアプリケーションにDropboxのApiKeyとApiSecretを持っています。

私はC#フレームワークを使用しようとしましたが、それらはデスクトップ/ winform/console/mobileアプリケーションのためだと思います。

私はrequest_tokenを取得できましたが、私はaccess_tokenを取得できません。

誰かがこの問題について少し気をつけてもらえますか? (Dropbox APIとASP.NET Webアプリケーションを併用して作業する)。

答えて

1

私は完璧な解決策を見つけました。 私はSharpBox .NETライブラリを使用しました...

私はそれを再生し、私はフォルダを読み込み、ファイルを取得し、ダウンロードのためのファイルの内容を読むことができました!

0

私はDropboxを使って作業する方法がわかりませんが、私のアプリケーションはwww.DriveHQ.comで動作しています.DriveHQは完全に動作しています。

0

ここでは、デモを見せるサンプル(ASP MVC4とSharpBox .NETを使用しています)があります。

まず、App_Dataのファイルからアクセストークンをロードしようとします。存在する場合は、トークンを使用してdropboxのappフォルダを読み込みます。

現在のセッションにリクエストトークンがあるかどうかを確認します。利用可能な場合は、ユーザーが自分のDropboxにアクセスするためのWebアプリケーションへのアクセス許可を与えている可能性があります。したがって、リクエストトークンをアクセストークンに変換してみてください。

リクエストトークンがない場合は、作成してセッションに保存し、ユーザーをドロップボックスにリダイレクトして、Webアプリケーションに自分のフォルダへのアクセスを許可するように求めます。

注:コードはデモです。複数のユーザーと実際のシナリオにするには、ユーザーごとにアクセストークンファイルを格納する必要があります。アクセストークンファイルを余計に読み込まないように、セッションキャッシュにアクセストークンをキャッシュする必要があります。

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     string tokenFile = Path.Combine (Server.MapPath("~/App_Data"), "AccessTokens/dropbox.xml"); 
     string appKey = "<<appkey>>"; 
     string appSecret = "<<appsecret>>"; 
     ICloudStorageAccessToken accessToken; 
     CloudStorage storage = new CloudStorage(); 

     DropBoxConfiguration config = 
      CloudStorage.GetCloudConfigurationEasy(nSupportedCloudConfigurations.DropBox) as DropBoxConfiguration; 

     if (TryLoadAccessToken(tokenFile, storage, out accessToken)) 
     { 
      storage.Open(config, accessToken); 
      var appFolder = storage.GetRoot(); 

      var folderContent = new List<Tuple<string, bool>>(); 
      foreach (var entry in appFolder) 
      { 
       bool isFolder = entry is ICloudDirectoryEntry; 
       folderContent.Add(new Tuple<string, bool>(entry.Name, isFolder)); 
      } 
      ViewBag.FolderContent = folderContent; 
     } 
     else 
     { 
      ICloudStorageAccessToken requestToken; 
      if (TryLoadRequestToken(out requestToken)) 
      { 
       if (requestToken is DropBoxRequestToken) 
       { 
        accessToken = 
         DropBoxStorageProviderTools.ExchangeDropBoxRequestTokenIntoAccessToken(
          config, appKey, appSecret, (DropBoxRequestToken)requestToken); 

        storage.Open(config, accessToken); 

        using (FileStream fs = System.IO.File.Create(tokenFile)) 
        { 
         storage.SerializeSecurityTokenToStream(accessToken, fs); ; 
        } 
       } 
       else 
       { 
        throw new Exception("The request token is not from Dropbox."); 
       } 
      } 
      else 
      { 
       config.AuthorizationCallBack = new Uri("http://localhost:57326/"); 

       requestToken = DropBoxStorageProviderTools.GetDropBoxRequestToken(config, appKey, appSecret); 

       Session["dropboxRequestToken"] = requestToken; 

       String url = DropBoxStorageProviderTools.GetDropBoxAuthorizationUrl(
        config, (DropBoxRequestToken)requestToken); 

       return new RedirectResult(url); 
      } 
     } 

     return View(); 
    } 

    private bool TryLoadRequestToken(out ICloudStorageAccessToken requestToken) 
    { 
     requestToken = Session["dropboxRequestToken"] as ICloudStorageAccessToken; 
     return requestToken != null; 
    } 

    private bool TryLoadAccessToken(string tokenFile, CloudStorage storage, out ICloudStorageAccessToken accessToken) 
    { 
     accessToken = null; 
     try 
     { 
      using (FileStream fileStream = 
        System.IO.File.Open(tokenFile, FileMode.Open, FileAccess.Read, FileShare.None)) 
      { 
       accessToken = storage.DeserializeSecurityToken(fileStream); 
      } 
     } 
     catch 
     { 

     } 

     return accessToken != null; 
    } 
} 
2

シャープボックスがしばらく更新されていないようです。あなたは

https://github.com/dkarzon/DropNet

それだけpackagemanagerコンソールでこれを使用し、nuget上にあるをチェックアウトする場合があります

インストール・パッケージDropNet

をについての詳細を読みますこのブログのそれ: http://dkdevelopment.net/what-im-doing/dropnet/

関連する問題