Мой первоначальный ответ был неверным. Фактический ответ намного проще.
На шаге 4 попробуйте изменить конечную точку:
var endpoint = `https://www.google.com/m8/feeds/contacts/default/full`;
В моих локальных тестах это привело к ожидаемому ответу.
Другое предложение заключается в добавлении alt=json
на ваш запрос, так что вы можете легко проанализировать JSON полезной нагрузки. В противном случае вы получите неприятную XML полезную нагрузку в ответе.
Вот обновленный шаг 4 с этими изменениями:
var endpoint = `https://www.google.com/m8/feeds/contacts/default/full`;
var xhr = new XMLHttpRequest();
xhr.open('GET', endpoint + '?access_token=' + encodeURIComponent(idToken) + '&alt=json');
xhr.setRequestHeader("Gdata-Version", "3.0");
xhr.onreadystatechange = function () {
if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
window.alert(xhr.responseText);
}
};
xhr.send();
Вот мой первоначальный ответ, на всякий случай это помогает кому-то еще.
Я подозреваю, что вам нужно будет добавить http://localhost:4200
в ваш список "Авторизованных JavaScript происхождений" для OAuth-клиента, который вы используете.
Измените свой идентификатор клиента OAuth 2.0 и добавьте URI к Javascript источникам, как показано ниже:
Другой раздел на эта страница, URI авторизованного перенаправления, разрешает перенаправлять поток OAuth только обратно в ваше веб-приложение. Часто ваш сервер веб-приложений фактически использует API-интерфейсы, поэтому Google автоматически не разрешает CORS-доступ к этим API-интерфейсам для обеспечения безопасности.