2012-03-01 24 views
5

我已經建立了一個「用谷歌登錄」功能的Windows Phone 7應用程序。 Google庫與Windows Phone運行時不兼容,所以我選擇了RestSharp。如何使用RestSharp進行Google身份驗證?

該應用已成功收到來自Google的驗證碼,下一步是交換訪問令牌和刷新令牌的代碼。在這裏我遇到了一些問題。

var request = new RestRequest(this.TokenEndPoint, Method.POST); 
request.AddParameter("code", code); 
request.AddParameter("client_id", this.ClientId); 
request.AddParameter("client_secret", this.Secret); 
request.AddParameter("redirect_uri", "http://localhost"); 
request.AddParameter("grant_type", "authorization_code"); 
client.ExecuteAsync<???>(request, (response) => 
      { 
       var passIn = response; 
      }); // how to use this method? 

我不知道如何使用client.ExecuteAsync<T>方法(或任何其他的將是有益的),以獲得從谷歌的反應。是否有任何其他代碼需要我使用這種方法?有誰能夠幫助我?

回答

3

你需要顯示的響應UI元素綁定。這似乎是你列出的問題的要點。

如果要在應用程序中顯示響應,應該將UI元素綁定到內部數據結構。

顯示響應

//在XAML,例如MainPage.xaml中

<TextBox x:Name="myResponseTextBox"> 

//在相應MainPage.xaml.cs中

client.ExecuteAsync(request, (response) => 
{ 

    myResponseTextBox.text = response.Content; 

}); 

文本框將顯示回調的結果它完成。

+0

我的問題是,如果正在執行一些其他代碼,則不會調用回調。這是一個很好的解決方案,謝謝! – yifei 2012-03-11 15:55:17

+0

此外,操作中的代碼應該包裝在調度程序中,以便它在UI線程上執行。 'client.ExecuteAsync(request,(response)=> {012;}} {} {} > { myResponseTextBox.text = response.Content; }); });'' – Chewbarkla 2012-03-30 01:39:16

1

嘗試:

client.ExecuteAsync(request, (response) => 
{ 
    var dataToBeParsed = response.Content; 
}); 
+0

嗨馬卡,事實是我需要從'dataToBeParsed'中檢索信息並將其顯示在我的應用程序頁面中。在這裏,我不確定是否1)'dataToBeParsed'已被接收到2)因爲它是異步執行的,我怎麼讓我的程序等待直到這行代碼被執行?如果我在'var dataToBeParsed = response.Content;'中放置了一箇中斷點,那麼程序將在返回錯誤之前返回錯誤,因爲調用函數中的下一行代碼是意外執行的。 – yifei 2012-03-01 10:10:34

+0

錯誤是什麼? – 2012-03-06 21:17:51

相關問題