正确调用Google API后如何取回?

时间:2018-12-22 01:13:53

标签: c# asynchronous google-api

我想连接到Google+ API,获取access_token,然后用它做一些其他事情。 我用相应的按钮制作了一个Windows窗体。但是获得令牌后,我无法返回程序窗口。 还必须说我不擅长异步编程。

我使用该文章来了解如何进行身份验证-http://www.daimto.com/googleplusapi-search-csharp/。所以我的代码是:

using System;
using System.Net;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Threading;
using System.Threading.Tasks;
using System.IO;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Plus.v1;
using Google.Apis.Services;

(...)

static string client_id = "XXXX.apps.googleusercontent.com";
static string client_secret = "yyyy";
ClientSecrets secrets = new ClientSecrets { ClientId = client_id, ClientSecret = client_secret };
string[] scopes = new string[] { PlusService.Scope.PlusLogin, PlusService.Scope.UserinfoEmail, PlusService.Scope.UserinfoProfile };

private void button1_Click(object sender, EventArgs e)
{
    UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(secrets, scopes, Environment.UserName, CancellationToken.None).Result;
    var service = new PlusService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = "disserApp",
    });
}

点击按钮后,一切正常-打开浏览器,加载Google授权页面。我输入了我的凭据,授予了权限等。最后,空白页面上显示了诸如“访问令牌已获得。您可以关闭该窗口”的文本。 我关闭了浏览器窗口,然后返回程序。但是它被冻结了! button1仍显示为缩音等。 看起来程序正在等待异步操作完成的信号。我究竟做错了什么? 谢谢。

0 个答案:

没有答案