2012-03-01 6 views
5

私は "Googleでログイン"機能を備えたWindows phone 7アプリを構築しました。 GoogleライブラリはWindows Phone Runtimeと互換性がないため、RestSharpを選択します。Google認証にRestSharpを使用するには?

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? 

は、私はGoogleからの応答を取得するためにclient.ExecuteAsync<T>方法(または任意の他は、参考になる)を使用するかどうかはわかりません。そのような方法を使用するために私に事前に要求されている他のコードはありますか?誰か助けてくれますか?

答えて

3

あなたが応答を表示するためのUI要素をバインドする必要があります。それは、あなたが概説した問題の要点のようです。

アプリケーションでレスポンスを表示するには、UI要素を内部データ構造にバインドする必要があります。テキストボックスが表示され、対応するMainPage.xaml.cs

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

    myResponseTextBox.text = response.Content; 

}); 

例えば、応答XAMLで

//表示MainPage.xamlを

<TextBox x:Name="myResponseTextBox"> 

//が完了すると、コールバックの結果はになります。

+0

私の問題は、他のコードが実行されているとコールバックが呼び出されないようなことです。これは良い解決策です、ありがとう! – yifei

+0

また、アクション内のコードはディスパッチャにラップされ、UIスレッド上でラップされる必要があります。 'client.ExecuteAsync(request、(response)=> { Deployment.Current.Dispatcher.BeginInvoke(()= > { myResponseTextBox.text = response.Content; }); }); ' – Chewbarkla

1

試してみてください。

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

こんにちは、私は 'dataToBeParsed'から情報を取得し、それを私のアプリケーションページに表示する必要があります。ここで私は1) 'dataToBeParsed'を受け取ったのかどうか分からない2)asyncが実行されているので、このコード行が実行されるまで私のプログラムを待たせることができますか? 'var dataToBeParsed = response.Content;'にブレークポイントを置くと、呼び出し元関数の次のコード行が予期せず実行されるので、プログラムはこの点に達する前にエラーを返します。 – yifei

+0

エラーは何ですか? –

関連する問題