【问题标题】:How to use RestSharp for Google Authentication?如何使用 RestSharp 进行 Google 身份验证?
【发布时间】:2012-03-01 08:21:48
【问题描述】:

我已经构建了一个带有“使用 google 登录”功能的 windows phone 7 应用程序。 Google 库与 windows phone 运行时不兼容,所以我选择 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?

我不知道如何使用client.ExecuteAsync&lt;T&gt; 方法(或任何其他有帮助的方法)从 Google 获得响应。是否有任何其他代码预先要求我使用这种方法?有人可以帮帮我吗?

【问题讨论】:

    标签: c# .net windows-phone-7 restsharp


    【解决方案1】:

    您需要绑定一个 UI 元素来显示响应。这似乎是您概述的问题的要点。

    如果您想在您的应用程序中显示响应,您应该有一个绑定到内部数据结构的 UI 元素。

    显示响应

    //在xaml中,例如MainPage.xaml

    <TextBox x:Name="myResponseTextBox">
    

    //在对应的MainPage.xaml.cs中

    client.ExecuteAsync(request, (response) =>
    {
    
       myResponseTextBox.text = response.Content; 
    
    }); 
    

    文本框将在回调完成时显示的结果。

    【讨论】:

    • 我的问题是如果正在执行一些其他代码,则不会调用回调。这是一个很好的解决方案,谢谢!
    • 另外,动作中的代码应该被包装在一个调度器中,以便在 UI 线程上执行 client.ExecuteAsync(request, (response) =&gt; { Deployment.Current.Dispatcher.BeginInvoke(() =&gt; { myResponseTextBox.text = response.Content; }); });
    【解决方案2】:

    尝试:

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

    【讨论】:

    • 嗨 Maka,事实上我需要从 dataToBeParsed 检索信息并将其显示在我的应用页面中。在这里我不确定 1) dataToBeParsed 是否已收到 2) 因为它是异步执行的,我怎样才能让我的程序等到这行代码被执行?如果我在var dataToBeParsed = response.Content; 处设置断点,程序将在到达该点之前返回错误,因为调用函数中的下一行代码意外执行。
    猜你喜欢
    • 2012-05-09
    • 2017-03-11
    • 2014-05-12
    • 2018-10-19
    • 1970-01-01
    • 2019-08-15
    • 2012-04-23
    • 2011-10-20
    • 2014-09-11
    相关资源
    最近更新 更多