【问题标题】:Windows Phone with DropNet带有 DropNet 的 Windows Phone
【发布时间】:2012-10-13 04:55:27
【问题描述】:

我正在 Windows Phone Emulator 上编写一个 Windows 应用程序来与 DropBox 帐户通信,并且正在使用 NuGet 库中的 DropNet 包。

我指的页面是:http://dkdevelopment.net/what-im-doing/dropnet/

以下是我已完成的步骤:

步骤 1) 创建客户端

DropNetClient GlobalClient = new DropNetClient("TOKEN", "SECRET", "testUserName", "testPassword");

我不确定 userToken 和 userSecret 中的内容,不能是硬编码的用户名和密码!

步骤 2) 请求令牌

GlobalClient.GetTokenAsync((userToken) =>
        {
            //Dont really need to do anything with userLogin,
            //DropNet takes care of it for now
        },
        (error) =>
        {
            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                MessageBox.Show(error.Message);
            });
        });

步骤 3) 构建授权 URL

var url = GlobalClient.BuildAuthorizeUrl("http://dkdevelopment.net/BoxShotLogin.htm");

步骤 4) 将浏览器重定向到 DropBox 登录页面。在此之后,DropBox 确实允许登录,但它显示此警告:“链接应用程序的请求无效”更重要的是,浏览器不会重定向到 http://dkdevelopment.net/BoxShotLogin.htm。这表明出了问题。不过不确定是什么。

Uri testUri = new Uri(url.ToString());
        WebBrowserTask task = new WebBrowserTask();
        task.Uri = testUri;
        task.Show();

第 5 步)这不起作用。 GlobalClient.UserLogin.Token 和 GlobalClient.UserLogin.Secret 未设置。

GlobalClient.GetAccessTokenAsync((accessToken) =>
        {
            //Store this token for "remember me" function
            GlobalClient.UserLogin.Token = accessToken.Token;
            GlobalClient.UserLogin.Secret = accessToken.Secret;
        },
        (error) =>
        {
            Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    MessageBox.Show(error.Message);
                });
        });

有人知道如何解决这个问题吗?

谢谢!

【问题讨论】:

    标签: windows-phone-7 dropbox dropnet


    【解决方案1】:

    我发现了问题所在。在第 2 步中,需要存储请求令牌以构建正确的授权 URL,并且该请求令牌需要作为第一个参数传递。但是,当我尝试像这样存储语句 lambda 时,它不会被存储。这里有什么问题?我认为这可能是我使用 lambdas 的方式。

    GlobalClient.GetTokenAsync((userToken) => 
    { 
        infoTextBlock.Text = userToken.Token; 
        GlobalClient.UserLogin.Token = userToken.Token; 
    }
    (error) => 
    { 
    });
    

    谢谢!

    【讨论】:

      【解决方案2】:

      问题出在以下代码中:

      UserLogin.Token = userToken.Token; 
      

      为令牌分配值并不意味着为请求设置了基础凭据。仅当您调用以下命令时才会这样做:

      UserLogin = userToken;
      

      如果你问我,类界面的设计很差。调用 UserLogin.Token = Something 和 UserLogin = NewLogin(关于底层业务规则)应该没有区别。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-11
        • 1970-01-01
        • 2014-06-17
        • 2013-03-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多