2012-10-13 69 views
0

我正在Windows Phone Emulator上編寫Windows應用程序,以便與DropBox帳戶進行通信,並使用NuGet庫中的DropNet軟件包。帶DropNet的Windows Phone

我指的頁面是: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確實允許登錄,但它會顯示以下警告:「連接應用程序的請求無效」,更重要的是,瀏覽器不會重定向到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); 
       }); 
     }); 

有人知道如何解決這個問題嗎?

謝謝!

回答

0

我想出了問題所在。在步驟2中,需要存儲請求令牌以便構建正確的授權URL,並且該請求令牌需要作爲第一個參數傳遞。但是,當我嘗試在這樣的語句lambda中存儲時,它不會被存儲。這裏有什麼問題?我認爲這是我可能使用lambda表達式的方式。

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

謝謝!

0

的問題是,在下面的代碼:

UserLogin.Token = userToken.Token; 

值分配給令牌不意味着潛在的憑據爲請求設置。這只是當你打電話給以下內容:

UserLogin = userToken; 

如果你問我,在類接口設計不佳。調用UserLogin.Token = Something和UserLogin = NewLogin(關於底層業務規則)應該沒有區別。