首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带DropNet的Windows Phone

带DropNet的Windows Phone
EN

Stack Overflow用户
提问于 2012-10-13 12:55:28
回答 2查看 466关注 0票数 0

我在Windows Phone模拟器上编写一个Windows应用程序来与DropBox帐户通信,并使用来自NuGet画廊的DropNet包。

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

下面是我完成的步骤:

步骤1)创建客户端

代码语言:javascript
复制
DropNetClient GlobalClient = new DropNetClient("TOKEN", "SECRET", "testUserName", "testPassword");

我不确定userToken和userSecret中有什么,它不能是硬编码的用户名和密码!

步骤2)请求令牌

代码语言:javascript
复制
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

代码语言:javascript
复制
var url = GlobalClient.BuildAuthorizeUrl("http://dkdevelopment.net/BoxShotLogin.htm");

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

代码语言:javascript
复制
Uri testUri = new Uri(url.ToString());
        WebBrowserTask task = new WebBrowserTask();
        task.Uri = testUri;
        task.Show();

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

代码语言:javascript
复制
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);
                });
        });

有人知道怎么解决这个问题吗?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-10-14 04:59:24

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

代码语言:javascript
复制
GlobalClient.GetTokenAsync((userToken) => 
{ 
    infoTextBlock.Text = userToken.Token; 
    GlobalClient.UserLogin.Token = userToken.Token; 
}
(error) => 
{ 
});

谢谢!

票数 0
EN

Stack Overflow用户

发布于 2013-12-06 12:36:46

该问题存在于以下代码中:

代码语言:javascript
复制
UserLogin.Token = userToken.Token; 

为token赋值并不意味着为请求设置了底层凭据。仅当您调用以下代码时才会执行此操作:

代码语言:javascript
复制
UserLogin = userToken;

如果你问我,我觉得类接口的设计很糟糕。调用UserLogin.Token = Something和UserLogin = NewLogin (对于底层业务规则)应该没有区别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12870080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档