Процесс аутентификации Google - PullRequest
4 голосов
/ 20 марта 2012

Я пытаюсь написать собственное приложение для доступа к календарю пользователей Google.Я пытаюсь использовать пример, предоставленный Google, чтобы получить аутентификацию, но никогда не запускается функция аутентификации

private void Window_Initialized(object sender, EventArgs e)
{
    var provider = new NativeApplicationClient(
            GoogleAuthenticationServer.Description);
    provider.ClientIdentifier = "<My Client Id here>";
    provider.ClientSecret = "<My Client Secret here";

    var auth = new OAuth2Authenticator<NativeApplicationClient>(
        provider, (p) => GetAuthorization(provider));

    CalendarService service = new CalendarService();
    CalendarsResource.GetRequest cr = service.Calendars.Get("{primary}");

    if (cr.CalendarId != null)
    {
        Console.WriteLine("Fetching calendar");
        //Google.Apis.Calendar.v3.Data.Calendar c =
            service.Calendars.Get("{primary}").Fetch();
    }
    else
    {
        Console.WriteLine("Service not found");
    }
}

Вот код, который я использую для аутентификации.Я никогда не вижу публикации консоли.

private static IAuthorizationState GetAuthorization(NativeApplicationClient arg)
{
    Console.WriteLine("Authorization Requested");

    IAuthorizationState state = new AuthorizationState(
        new[] { CalendarService.Scopes.Calendar.GetStringValue() });
    state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
    Uri authUri = arg.RequestUserAuthorization(state);

    Process.Start(authUri.ToString());
    // Request authorization from the user and get the code
    string authCode = Console.ReadLine();

    // Retrieve the access token by using the authorization code:
    return arg.ProcessUserAuthorization(authCode, state);
}

Есть ли лучшие учебники или я делаю что-то не так?

Ответы [ 3 ]

2 голосов
/ 02 апреля 2013

Код примера не работает. Чтобы служба использовала ваш аутентификатор, вам необходимо подключить его. В этом примере нет связи между сервисом и аутентификатором. Создайте сервис как это:

var service = new CalendarService(new BaseClientService.Initializer()
{
    Authenticator = auth
};

Посмотрите на https://code.google.com/p/google-api-dotnet-client/ для лучшей документации / рабочего кода.

0 голосов
/ 14 мая 2014

Я думаю, что вышеуказанные способы связаны со старой версией Google Calendar DLL.Кто-нибудь знает о документации новой версии календаря Google, т. Е. V 1.8.1.82.Google никогда не предоставляет хорошую документацию для разработчика .NET.s

0 голосов
/ 19 апреля 2012

Ознакомьтесь с новыми документами .Вам нужно будет заменить

var auth = new OAuth2Authenticator<NativeApplicationClient>(
    provider, (p) => GetAuthorization(provider));

на

AuthenticatorFactory.GetInstance().RegisterAuthenticator(
    () => new OAuth2Authenticator(provider, GetAuthentication));

Как говорится в комментарии, когда вы вызываете var service = new CalendarService(), автоматически будет вызван ранее зарегистрированный аутентификатор.

...