2012-03-01 58 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