0

Я не смог использовать API контактов Google для получения контактной информации из учетной записи службы (без использования сеанса пользователя в реальном времени). Независимо от того, что я пытаюсь, я либо получаю исключение (например: Message = "Ошибка: \" invalid_request \ ", Описание: \" Недействительный адрес эл. Почты подписи. \ ", Uri: \" \ ""), или нет ошибка, но возвращено 0 контактов.API-интерфейс Google Contacts не удается получить контактную информацию через учетную запись службы

Я дважды проверил настройки в консоли администратора Google Apps и страницах управления доступом к API (включая получение этих параметров из технической поддержки Google App), но независимо от того, я не могу получить контакты для загрузки. Я также попробовал все примеры, которые я смог найти в разделе «Переполнение стека», но ни один из них, похоже, не исправил проблему.

Эти попытки были выполнены на C#/ASP.net, но я достаточно хорошо разбираюсь в других языках, чтобы я мог адаптировать любой пример, который может иметь кто-то, что работает.

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

спасибо !!!

Вот пример попытки я сделал, что всегда приводит к исключения «invalid_request \»: «Invalid олицетворения ргп адрес электронной почты \».

private void TestLoadContacts() 
    { 
     try 
     { 
      string strClientID = "STRINGGENERATEDFROMGOOGLEAPPSINTERFACE.apps.googleusercontent.com"; 
      var credential = GenerateCred(new[] { "https://www.google.com/m8/feeds" }, strClientID); 

      // Get the token for this scope and user 
      if (credential.RequestAccessTokenAsync(new CancellationToken()).Result) 
      { 
       // use the token to initalize the request 
       var rs = new RequestSettings("Google Sync") 
       { 
        OAuth2Parameters = new OAuth2Parameters() 
        { 
         AccessToken = credential.Token.AccessToken 
        } 
       }; 

       var request = new ContactsRequest(rs); 
       Feed<Contact> f = request.GetContacts(); 
       foreach (var c in f.Entries) 
       { 
        //process each contact 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      string strError = ex.Message; 
     } 
    } 

    private static ServiceAccountCredential GenerateCred(IEnumerable<string> scopes, string delegationUser) 
    { 
     string strServiceAccountEmail = "[email protected]"; 
     X509Certificate2 certificate = new X509Certificate2(@"C:\MyP12s\MyGoogleAccount-9da1a08f4eef.p12", 
      "notasecret", X509KeyStorageFlags.Exportable); 

     var credential = new ServiceAccountCredential(
      new ServiceAccountCredential.Initializer(strServiceAccountEmail) 
      { 
       Scopes = scopes, 
       User = delegationUser 
      }.FromCertificate(certificate)); 
     return credential; 
    } 

ответ

0

Получение контактов должно быть легко сделать (цит в Google Contacts API documentation)

Вопрос в том, что касается самих учетных записей служб? Если это так, вам нужно включить делегирование домена на учетную запись службы (более подробная информация может быть найдена here, которая также связана с приведенной выше ссылкой). В основном вам нужно будет добавить конкретные области, которые вы будете использовать для авторизованной учетной записи службы.

Надеюсь, это поможет!

+0

Благодарим вас за идею. Я думаю, однако, что у меня, вероятно, уже была соответствующая область (https://www.google.com/m8/feeds), установленная в моей учетной записи службы. Вот скриншот о том, как я его настроил. Это что-то не так? –

+0

Ну, я не мог поставить снимок экрана, но вот значения, которые у меня есть на странице «Доступ к безопасности -> Управление доступом к API». В столбце «Уполномоченные API-клиенты» у меня есть следующее: «STRINGGENERATEDFROMGOOGLEAPPSINTERFACE.apps.googleusercontent.com» (то же значение, которое я ввел в strClientID в предоставленном фрагменте кода); в One или More API Scopes у меня есть: https://www.google.com/m8/feeds. " Это что-то не так? –

 Смежные вопросы

  • Нет связанных вопросов^_^