我在Windows Phone模拟器上编写一个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);
});
});有人知道怎么解决这个问题吗?
谢谢!
发布于 2012-10-14 04:59:24
我发现了问题所在。在步骤2中,需要存储请求令牌,以便构建正确的授权URL,且请求令牌需要作为第一个参数传递。然而,当我尝试像这样在lambda语句中存储时,它并没有被存储。这里有什么问题?我想这可能是我使用lambdas的方式。
GlobalClient.GetTokenAsync((userToken) =>
{
infoTextBlock.Text = userToken.Token;
GlobalClient.UserLogin.Token = userToken.Token;
}
(error) =>
{
});谢谢!
发布于 2013-12-06 12:36:46
该问题存在于以下代码中:
UserLogin.Token = userToken.Token; 为token赋值并不意味着为请求设置了底层凭据。仅当您调用以下代码时才会执行此操作:
UserLogin = userToken;如果你问我,我觉得类接口的设计很糟糕。调用UserLogin.Token = Something和UserLogin = NewLogin (对于底层业务规则)应该没有区别。
https://stackoverflow.com/questions/12870080
复制相似问题