Как вернуться после правильного вызова Google API? - PullRequest
0 голосов
/ 22 декабря 2018

Я хочу подключиться к 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 загружена.Я ввел свои учетные данные, дал разрешения и т. Д. Наконец, была получена пустая страница с текстом «Токен доступа. Вы можете закрыть это окно».Я закрыл окно браузера и вернулся к своей программе.Но это было заморожено!Кнопка 1 по-прежнему отображается как ckickining и т. Д. Похоже, что программа ожидает сигнала об окончании асинхронной операции.Что я делаю неправильно?Спасибо.

...