如何将Xamarin应用连接到Dropbox

时间:2018-01-30 17:38:44

标签: c# xamarin.forms xamarin.android dropbox

我正在使用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)]

2 个答案:

答案 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/