Я разрабатываю приложение Angular 6, которое пытается подключиться к API Google и получать сообщения электронной почты.
Я использую эту ссылку в качестве руководства:
https://developers.google.com/gmail/api/v1/reference/users/messages/get#examples
Согласно этому сайту конечная точка для получения сообщений:
https://www.googleapis.com/gmail/v1/users/userId/messages/id
Я не уверен, чтомой идентификатор пользователя или идентификаторы почтовых сообщений.Поэтому я только что попробовал свой адрес электронной почты для идентификатора пользователя и 1 для идентификатора сообщения (думая, что это будут просто инкрементные числа).
Однако, когда я отправляю запрос, я получаю эту ошибку:
TypeError: Вы указали «undefined» там, где ожидался поток.Вы можете предоставить Observable, Promise, Array или Iterable.
Обратите внимание, что я не использую клиентскую библиотеку gapi или любую другую библиотеку.Я отправляю запрос просто через HttpClient.request (req: HttpRequest).Это потому, что мы хотим иметь возможность отправлять запросы нескольким провайдерам API, а не только Google.
Вот как выглядит запрос:
{
body: null,
headers: {
headers: Map(0) {},
lazyInit: {...},
lazyUpdate: {
0: {name: "Authorization", value: "Bearer ya29.Glv0B...},
length: 1
},
normalizedNames: Map(0) {}
},
method: "GET",
params: {...},
reportProgress: false,
responseType: "json",
url: “https://www.googleapis.com/gmail/v1/users/***@gmail.com/messages/1”,
urlWithParams: “https://www.googleapis.com/gmail/v1/users/***@gmail.com/messages/1”,
withCredentials: false
}
Обратите внимание, что я расширил заголовкичтобы показать, что у меня есть токен на предъявителя, срок действия которого еще не истек при отправке запроса.
Итак, мой вопрос состоит из двух частей:
1) Что означает сообщение об ошибке: Вы предоставили 'undefined 'где ожидался поток.
2) Как мне узнать мой идентификатор пользователя и идентификатор сообщения?
РЕДАКТИРОВАТЬ: Я сталкивался с подобным постом здесь: TypeError: Выпредоставил «неопределенный», где ожидался поток .Однако решения, предложенные в этом посте, не решили мою проблему.Стефан предоставляет ссылку о том, как получить реальное сообщение об ошибке (потому что «Вы указали« неопределенный », где поток ...», по-видимому, неверно) на этом сайте здесь: https://angular.io/guide/http#getting-error-details. Перейдя по этой ссылке, янаписал это:
async callEndpoint(endpoint: Endpoint): Promise<any> {
const request = await this.getRequest(endpoint);
return await this._http.request(request).pipe(
catchError(this.handleError)
);
}
handleError(error: HttpErrorResponse): ObservableInput<{}> {
console.log('error in handleError:', error);
return null;
}
Но он даже не справляется с ошибкой.Вместо этого он дает другую ошибку:
TypeError: Преобразование круговой структуры в JSON
^ Я понятия не имею, что это значит.
Вторая причинассылка не отвечает на мой вопрос, потому что мой вопрос двоякий: помимо вопроса, почему я получаю ошибку, я также спрашиваю, как я могу узнать, каков мой идентификатор пользователя Gmail и чтоИдентификатор сообщенияОшибка, которую я получаю , может быть просто вызвана этим.