我正在使用C#和Xamarin.Forms创建应用程序,我通过Xamarin Live在手机上运行。它需要从dropbox.com上我的个人资料中的特定保管箱文件夹上传和下载文本文件。我已经尝试了几个Dropbox库但是我没有成功。
我试过的那些:
这些库可能会工作(我可能只是搞砸了),我觉得文档告诉我几乎所有我需要知道的东西,但后来跳过了一些小东西,如获取“dropbox文件夹路径”等。此时我基本上不知道如何继续,所以如果有任何人有任何访问Dropbox的经验,将非常感谢如何从我的应用程序访问Dropbox的解释/线索。
编辑:
根据上面链接的官方Dropbox文档,这是我到目前为止所尝试的内容:
namespace test2
{
public class dropboxCallClass
{
public static void Main()
{
var task = Task.Run((Func<Task>)dropboxCallClass.Run);
task.Wait();
}
static async Task Run()
{
using (var dbx = new DropboxClient("myToken"))
{
var data = await dbx.Users.GetCurrentAccountAsync();
if (data != null) {
DisplayTheReturnedValue(data.Name.DisplayName);
} else
{
DisplayTheReturnedValue("call returned null");
}
//Console.WriteLine("{0} - {1}", full.Name.DisplayName, full.Email);
}
}
}
}
我已经在Dropbox上创建了一个App,并生成了一个Token值,我传递给了dropboxClient()。
然后我使用dropboxCallClass.Main();
调用该方法我希望从此次通话中收到的是保管箱帐户的名称作为字符串。
在Task.Wait():
行上返回的是未处理的错误异常System.Reflection.TargetInvocationException:
我使用Xamarin live在android中运行我的应用程序。我的手机会弹出此异常:
未捕获的例外情况 “NInterpret.interpretedObject”类型的对象与目标类型“System.IDisposable”(TargetException)不匹配
编辑:
这是完整的例外:
[LogEntry:Time = 31/01/201 16:55:35 +01:00,Level = Error,Title = Uncaught Exception,Message = exception
参数名称:System.Reflection.TargetException:类型为“NInterpret.InterpretedObject”的对象与目标类型“System.IDisposable”不匹配
在System.Reflection.MonoMethod.Invoke(System.Object obj,System.Reflection.BindingFlags invokeAttr,System.Reflection.Binder binder,System.Object [] parameters,System.Globalization.CultureInfo culture)[0x0004f] in&lt; 896ad1d315ca4ba7b117efb8dacaedcf&gt; :0
在System.Reflection.MethodBase.Invoke(System.Object obj,System.Object [] parameters)[0x00000] in&lt; 896ad1d315ca4ba7b117efb8dacaedcf&gt ;:0
在NInterpret.Interpreter.callAMethod(NInterpret.AMethod m,NInterpret.AType [] ptypes,NInterpret.AType [] genericMethodArgs,System.Collections.Generic.Dictionary 2[TKey,TValue] genericArgsIndex, System.Object[] args, System.Collections.Generic.List
1 [T] byRefArgs,Microsoft.FSharp.Core。 FSharpOption 1[T] byRefTarget, System.Object target, System.Boolean virtualCall) [0x003f7] in <5a566e1d7eef0f2aa74503831d6e565a>:0
at NInterpret.Interpreter.callMethodReference (System.Collections.Generic.Dictionary
2 [TKey,TValue] gargs,Mono.Cecil.MethodReference ms,System.Boolean virtualCall)[0x0037f] in&lt; 5a566e1d7eef0f2aa74503831d6e565a&gt;:0
at NInterpret.Interpreter.interpretBlock(System.Object [] args,System.Object [] locals,Mono.Cecil.Cil.Instruction initialInstruction,Microsoft.FSharp.Collections.FSharpSet 1[T] inTries, Microsoft.FSharp.Core.FSharpOption
1 [T] lastException)[0x03c6e ]&lt; 5a566e1d7eef0f2aa74503831d6e565a&gt;:0
at NInterpret.Interpreter.interpretBlock(System.Object [] args,System.Object [] locals,Mono.Cecil.Cil.Instruction initialInstruction,Microsoft.FSharp.Collections.FSharpSet 1[T] inTries, Microsoft.FSharp.Core.FSharpOption
1 [T] lastException)[0x00202 ]&lt; 5a566e1d7eef0f2aa74503831d6e565a&gt;:0
at NInterpret.Interpreter.interpretBlock(System.Object [] args,System.Object [] locals,Mono.Cecil.Cil.Instruction initialInstruction,Microsoft.FSharp.Collections.FSharpSet 1[T] inTries, Microsoft.FSharp.Core.FSharpOption
1 [T] lastException)[0x0013c ]&lt; 5a566e1d7eef0f2aa74503831d6e565a&gt;:0(ArgumentException)]
答案 0 :(得分:0)
问题不在于Dropbox Api本身,而在于我使用Xamarin live。出于某种原因,这使我无法使用任何nuget包或第三方dll。
因此,使Dropbox工作的解决方案是在Android手机的开发者选项中启用usb-debugging并通过USB电缆将其连接到计算机。
答案 1 :(得分:0)
如果要从Android和iO上的Dropbox中选取文件,可以使用Dropbox Chooser库中的此绑定库:
https://github.com/LMachinery/Plugin.DBChooser
这是nuget Gallery上的插件
https://www.nuget.org/packages/Plugin.DBChooser/
如果您还想从Dropbox中打开和保存文件,则方法会更加复杂, 您应该使用Xamarin.Auth Api
https://github.com/xamarin/Xamarin.Auth
获取访问令牌后,您可以下载文件和上传文件 使用保管箱Api https://www.nuget.org/packages/Dropbox.Api/