我想连接到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仍显示为缩音等。 看起来程序正在等待异步操作完成的信号。我究竟做错了什么? 谢谢。