Как исправить ошибку состояния 400 с помощью Google apis (People.Connections.List) с помощью ядра.net?
Я пытаюсь получить свои контакты из API контактов Google, и каждый раз при попытке использовать People.Connections.List я получаю 400 ошибок кода состояния.
Вот мой код:
static void Main(string[] args)
{
PeopleService service = AuthenticateUser();
// Works:
Person connectionsResponse = service.People.Get("people/me?personFields=names,phoneNumbers").Execute();
// Doesn't Work:
ListConnectionsResponse connectionsResponses = service.People.Connections.List("people/me?personFields=names,addresses").Execute();
}
private static PeopleService AuthenticateUser()
{
UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = CLIENT_ID,
ClientSecret = CLIENT_SECRET
},
new[] { "profile", "https://www.googleapis.com/auth/contacts.readonly", "https://www.googleapis.com/auth/contacts", "https://people.googleapis.com/v1", PeopleService.Scope.Contacts }, // scopes
"me",
CancellationToken.None).Result;
PeopleService ps = new PeopleService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = PEOPLE_API_NAME,
ApiKey = PEOPLE_API_KEY
});
return ps;
}
У меня проблема с этой строкой:
ListConnectionsResponse connectionsResponses = service.People.Connections.List("people/me?personFields=names,addresses").Execute();
Я следовал инструкциям на https://developers.google.com/people/api/rest/v1/people.connections/list и пробовал следующие запросы:
people/me?personFields=names
/people/me?personFields=names
people/me/connections?personFields=names
Я также попытался изменить значения "personFields" и получил ту же ошибку.
Я использую консольное приложение.NetCore 2.1 со следующими пакетами:
<PackageReference Include="Google.Apis" Version="1.38.0" />
<PackageReference Include="Google.Apis.People.v1" Version="1.25.0.830" />
При использовании Google "Попробуйте этот API" по ссылке выше, это работает, и я получаю следующий код curl:
curl \
'https://people.googleapis.com/v1/people/me/connections?personFields=names' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--compressed
Как вы можете видеть, я попытался использовать ту же ссылку в своем коде, и она вернула ту же ошибку.
Вот полное сообщение об ошибке:
Unhandled Exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
Invalid personFields mask path: "addresses/connections". Valid paths are documented at https://developers.google.com/people/api/rest/v1/people/get. [400]
Errors [
Message[Invalid personFields mask path: "addresses/connections". Valid paths are documented at https://developers.google.com/people/api/rest/v1/people/get.] Location[ - ] Reason[badRequest] Domain[global]
]
at Google.Apis.Requests.ClientServiceRequest`1.ParseResponse(HttpResponseMessage response) in Path:line 192
at Google.Apis.Requests.ClientServiceRequest`1.Execute() in C:\Apiary\2019-01-31.11-23-48\Src\Support\Gooenter code heregle.Apis\Requests\ClientServiceRequest.cs:line 116
at PeopleAPI.Auth.Main(String[] args) in Path:line 31
Надеюсь, вы сможете мне помочь.
Спасибо:)