Google People Api Contact создан, но я его нигде не вижу - PullRequest
0 голосов
/ 05 октября 2018

Я использую PeopleService для создания контактов прямо в мою учетную запись G Suit.Я следовал инструкциям по безопасности, чтобы получить ключ для учетной записи.Мое приложение будет создавать контакты, поэтому нет необходимости запрашивать разрешение конкретного пользователя.У него есть свой ключ и учетные данные.Кажется, мой код работает, за исключением того, что CreateContactRequest предоставляет мне ResourceName со значением "people / c171255166120767303".И каждый раз, когда я запрашиваю, я получаю другое имя ресурса, например, «people / c9013378989213012841».Проблема в том, где, черт возьми, что идет?В моей учетной записи G Suite я не вижу нигде созданного контакта.Но результирующий объект Person выглядит нормально.

Как я могу проверить, работает ли это?Где был создан контакт?

Код ниже:

    private static string _clientId = "1........1";
    private static string _clienteScret = "i******************_";
    private static string _serviceAccountId = "aaaa@bbbb.iam.gserviceaccount.com";

public static void Cadastrar (сообщение Models.SignupRequest) {

        var chave =
            @"D:\********.p12";

        var certificate = new X509Certificate2(chave, "notasecret", X509KeyStorageFlags.Exportable);

        var credential = new ServiceAccountCredential(
            new ServiceAccountCredential.Initializer(_serviceAccountId)
            {
                Scopes = new[] { 
                    PeopleService.Scope.Contacts, 
                    PeopleService.Scope.ContactsReadonly,
                    "https://www.google.com/m8/feeds"
                }
            }.FromCertificate(certificate));


        var service = new PeopleService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "Client for www",
        });

        var contactToCreate = new Person();
        var names = new List<Name> {new Name() {GivenName = message.name, FamilyName = "Doe"}};

        contactToCreate.Names = names;
        contactToCreate.EmailAddresses = new List<EmailAddress>
        {
            new EmailAddress()
            {
                DisplayName = message.name,
                Value = message.email
            }
        };
        contactToCreate.Organizations = new List<Organization>
        {
            new Organization()
            {
                Current = true,
                Name = message.nome_fantasia,
            }
        };
        contactToCreate.Biographies = new List<Biography>
        {
            new Biography()
            {
                Value = message.ToString()
            }
        };

        contactToCreate.PhoneNumbers = new List<PhoneNumber>
        {
            new PhoneNumber()
            {
                Type = "mobile",
                Value = message.celular
            },
            new PhoneNumber()
            {
                Type = "work",
                Value = message.telefone
            }
        };

        var request = new Google.Apis.PeopleService.v1.PeopleResource.CreateContactRequest(service, contactToCreate);

        var createdContact = request.Execute();
    }

1 Ответ

0 голосов
/ 10 октября 2018

Если вы хотите создать контакт для пользователя с «email@yourdomain.com» через служебную учетную запись, вам нужно:

  • Используйте «setServiceAccountUser (userEmail)», чтобы выдать себя за пользователя
  • Включите олицетворение в своей службе API G-Suite for People.По этому вопросу:
    • См. Раздел «Делегирование широкого доступа к домену» здесь
    • Получить идентификатор клиента из вашей учетной записи
    • Использовать "https://www.googleapis.com/auth/contacts" как область действия.
...