私は現在ac#プロジェクトに取り組んでおり、プログラム内にドロップボックスを実装しようとしています。ドロップボックスの認証とディレクトリの作成に成功しましたが、ファイルをアップロードする方法がわかりません。
DropboxのアクセスタイプはAppFolderで、appフォルダー内にフォルダーを作成できます。ファイルをアップロードするには、テストのために、テキストフィールドに何かを書き込んでフォームを送信します。次に、実行可能ファイルの作業ディレクトリ内のテキストファイルに文字列を書き込み、ファイルをにアップロードしようとします。 appフォルダーのルートですが、one more errors have occurred
おそらく最も役に立たないエラーとして例外がスローされます。
以下で重要な場合は、Dropboxを認証する方法です。
private void authenticateDropbox(Boolean isFromCallBack = false)
{
try
{
if (!isFromCallBack)
{
dropboxServiceProvider = new DropboxServiceProvider(dropboxAppKey, dropboxAppSecret, AccessLevel.AppFolder);
//lblStatus.Content = "Getting request Token";
oauthToken = dropboxServiceProvider.OAuthOperations.FetchRequestTokenAsync(callbackUrl, null).Result;
//lblStatus.Content = "Request token retrieved";
parameters = new OAuth1Parameters();
parameters.CallbackUrl = callbackUrl;
string authenticateUrl = dropboxServiceProvider.OAuthOperations.BuildAuthorizeUrl(oauthToken.Value, parameters);
webDropbox.Navigate(new Uri(authenticateUrl));
}
else
{
AuthorizedRequestToken requestToken = new AuthorizedRequestToken(oauthToken, null);
OAuthToken oauthAccessToken = dropboxServiceProvider.OAuthOperations.ExchangeForAccessTokenAsync(requestToken, null).Result;
Properties.Settings.Default.dropbox_accessSecret = oauthAccessToken.Secret;
Properties.Settings.Default.dropbox_accessToken = oauthAccessToken.Value;
Properties.Settings.Default.Save();
IDropbox dropbox = dropboxServiceProvider.GetApi(oauthAccessToken.Value, oauthAccessToken.Secret);
DropboxProfile profile = dropbox.GetUserProfileAsync().Result;
Close();
MessageBox.Show("Welcome " + profile.DisplayName, "DropBox Success", MessageBoxButton.OK, MessageBoxImage.Information);
}
}
catch (AggregateException ex)
{
MessageBox.Show("AggregateException: Failed to authenticate\n\n" + ex.Message, "Authentication Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
catch (Exception ex)
{
MessageBox.Show("General Exception: Failed to authenticate\n\n" + ex.Message, "Authentication Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private void webDropbox_Navigating(object sender, System.Windows.Navigation.NavigatingCancelEventArgs e)
{
string url = e.Uri.ToString();
if (url.StartsWith(callbackUrl, StringComparison.OrdinalIgnoreCase))
{
authenticateDropbox(true);
}
}
以下は、動作しているディレクトリを作成し、ファイルをアップロードする方法に関するコードです。
private void uploadContentToDropbox()
{
try
{
DropboxServiceProvider dropboxServiceProvider = new DropboxServiceProvider(dropboxAppKey, dropboxAppSecret, AccessLevel.AppFolder);
IDropbox dropbox = dropboxServiceProvider.GetApi(Properties.Settings.Default.dropbox_accessToken, Properties.Settings.Default.dropbox_accessSecret);
//DeltaPage deltaPage = dropbox.DeltaAsync(null).Result;
writeContentToFile();
Entry createFolderEntry = dropbox.CreateFolderAsync("Test Folder").Result;
Entry uploadFileEntry = dropbox.UploadFileAsync(
new AssemblyResource("assembly://DropBoxTest/DropBoxTest/upload.txt"), "upload.txt", true, null, CancellationToken.None).Result;
}
catch (AggregateException ex)
{
MessageBox.Show("Failed to upload:\n\n" + ex.Message, "Dropbox Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
catch (Exception ex)
{
MessageBox.Show("General failed to upload:\n\n" + ex.Message, "Dropbox Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
プログラムのリソースではなく、作成された単なるテキストファイルであるため、新しいAssemblyResourceと言う必要がある理由がわからないため、これが必要なものかどうかuploadFileEntry
はわかりません。
あなたが提供できるどんな助けにも感謝します。