2012-03-01 18 views
5

"google ile giriş yap" işlevine sahip bir Windows 7 uygulaması geliştirdim. Google kitaplığı windows telefon çalışma zamanı ile uyumlu değil, bu yüzden RestSharp'ı seçiyorum.Google Kimlik Doğrulama için RestSharp nasıl kullanılır?

Uygulama, Google'dan bir kimlik doğrulama kodu başarıyla aldı ve sonraki adım, erişim belirteci ve yenileme belirtecinin kodunu değiştirmek. Burada bir problemle karşılaştım.

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? 

Google'dan yanıt almak için client.ExecuteAsync<T> yöntemi (veya başka yararlı olacaktır) nasıl kullanılacağı emin değilim. Bu yöntemi kullanmak için önceden talep edilen başka bir kod var mı? Birisi bana yardım edebilir mi?

cevap

3

Sen tepkisini göstermek için bir UI öğesi bağlamak gerekir. Bu, özetlediğiniz sorunun özü gibi görünüyor.

Yanıtı uygulamanızda görüntülemek istiyorsanız, iç veri yapısına bağlı bir UI öğeniz olmalıdır. İlgili MainPage.xaml.cs

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

    myResponseTextBox.text = response.Content; 

}); 

Metin kutusu görüntüler içinde

<TextBox x:Name="myResponseTextBox"> 

// MainPage.xaml

örneğin yanıtı

// xaml, gösteriliyor

geri arama sonucu tamamlandığında.

+0

Benim sorunum, başka kodlar yürütülürse geri arama çağrılmayacak gibi. Bu iyi bir çözüm, teşekkürler! Bu 'client.ExecuteAsync (istek, (yanıt) => { Deployment.Current.Dispatcher.BeginInvoke (() = UI iş parçacığı üzerinde çalıştırılmaktadır böylece – yifei

+0

Ayrıca harekete içindeki kodlama memuru sarılmış olmalıdır > { myResponseTextBox.text = response.Content; }); }); ' – Chewbarkla

1

deneyin:

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

Merhaba Maka, aslında 'dataToBeParsed''ten bilgi almam ve uygulama sayfamda görüntülemem gerekiyor. Burada, 1) "dataToBeParsed" öğesinin 2 alınıp alınmadığından emin değilim. Zaman uyumsuz olarak yürütüldüğünden, programımın bu kod satırına kadar beklemesini nasıl sağlayabilirim? Var dataToBeParsed = response.Content; 'de bir kesme noktası koyarsanız, program, arama işlevindeki bir sonraki kod satırı beklenmedik şekilde yürütüldüğünden bu noktaya ulaşılmadan önce hata döndürür. – yifei

+0

Hata nedir? –