API каталогов приложений Google (1.6 и выше) DotNetOpenAuth не разрешается

Этот код меняется быстро и трудно понять, что работает, а что нет...

Я просматривал этот пост: Использовали ли вы Google Directory API?

Который использует библиотеку 1.4.

Я установил API 1.6 через nuget. Однако NativeApplicationClient и IAuthorizationState не могут быть разрешены. У меня сложилось впечатление, что мне больше не нужен пакет nuget DotNetOpenAuth или пакет Google.Apis.Authentication (где, я полагаю, они разрешены.

Это полный и измененный код, с которым я играю: (если у вас есть лучший пример создания пользователей с использованием нового API, я бы хотел его увидеть!)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Diagnostics;

using Google;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Auth;
using Google.Apis.Download;
using Google.Apis.Logging;
using Google.Apis.Services;
using Google.Apis.Upload; 
using Google.Apis.Admin.Directory;
using Google.Apis.Admin.Directory.directory_v1.Data;


namespace GoogleAddUser
{
    class Program
    {
    static void Main(string[] args)
    {
        // Display the header and initialize the sample.
        //CommandLine.EnableExceptionHandling();
        Console.WriteLine("Create users in a google apps domain!");
        Console.WriteLine("by Jonas Bergstedt 2013");

        // Get the user data and store in user object
        Console.Write("Email: ");
        string userId = Console.ReadLine();

        Console.Write("Givenname: ");
        string GivenName = Console.ReadLine();

        Console.Write("Familyname: ");
        string FamilyName = Console.ReadLine();

        Console.Write("Password: ");
        string Password = Console.ReadLine();

        User newuserbody = new User();
        UserName newusername = new UserName();
        newuserbody.PrimaryEmail = userId;
        newusername.GivenName = GivenName;
        newusername.FamilyName = FamilyName;
        newuserbody.Name = newusername;
        newuserbody.Password = Password;

        // Register the authenticator.
        var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description)
        {
            ClientIdentifier = "<your clientId from Google APIs Console>",
            ClientSecret = "<your clientsecret from Google APIs Console>",
        };

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

        // Create the service.
        var service = new DirectoryService(new BaseClientService.Initializer()
        {
            Authenticator = auth,
            ApplicationName = "Create User",
            ApiKey = "<your API Key from Google APIs console> (not sure if needed)"
        });

        User results = service.Users.Insert(newuserbody).Execute();
        Console.WriteLine("User :" + results.PrimaryEmail + " is created");
        Console.WriteLine("Press any key to continue!");
        Console.ReadKey();
    }

    private static IAuthorizationState GetAuthorization(NativeApplicationClient arg)
    {
        // Get the auth URL:
        IAuthorizationState state = new AuthorizationState(new[] { DirectoryService.Scopes.AdminDirectoryUser.GetStringValue() });
        state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
        Uri authUri = arg.RequestUserAuthorization(state);

        // Request authorization from the user (by opening a browser window):
        Process.Start(authUri.ToString());
        Console.WriteLine();
        Console.Write("Authorization Code: ");
        string authCode = Console.ReadLine();

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


}

}


person Zonus    schedule 03.12.2013    source источник


Ответы (1)


Начиная с бета-версии 1.6.0, мы представили новый пакет Google.Apis.Auth NuGet (Google.Apis.Authentication, использующий DNOA, устарел!). Вы уже установили этот пакет, потому что все новые API имеют ссылку на него. Дополнительные сведения см. на нашей странице OAuth2. о том, как использовать новые потоки OAuth2 (это уже не волшебство, теперь потоки действительно имеют смысл!)

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

Надеюсь, это полезно.

person peleyal    schedule 03.12.2013
comment
Я нигде не вижу ссылку на подписку в блоге, нужно ли мне перейти куда-то еще, чтобы подписаться на нее? - person Zonus; 03.12.2013
comment
Вы можете использовать feedly.com, например, для управления своими подписками на блоги (это то, что я делаю). Вы также можете присоединиться к нашей внешней группе (группы). google.com/forum/?hl=ru&fromgroups#!forum/). Информация о новом релизе также публикуется во внешней группе. - person peleyal; 03.12.2013