Не удается получить доступ к Google Rest API с помощью Iron-AJAX в полимере
Я использую Polymerfire для авторизации. Ответ 401 от API Google REST...
Можете ли вы сделать запрос API Google с Iron-AJAX? Отлично работает на детской площадке o auth...
Код:
<link rel="import" href="../bower_components/polymer/polymer.html">
<link rel="import" href="../bower_components/polymerfire/polymerfire.html">
<link rel="import" href="../bower_components/iron-image/iron-image.html">
<link rel="import" href="../bower_components/iron-list/iron-list.html">
<link rel="import" href="../bower_components/google-apis/google-apis.html">
<link rel="import" href="../bower_components/iron-ajax/iron-ajax.html">
<link rel="import" href="shared-styles.html">
<dom-module id="doc-create">
<template>
<style include="shared-styles">
:host {
display: block;
padding: 10px;
}
</style>
<!--
<iron-ajax
auto
url="https://api.github.com/repos/firebase/polymerfire/issues"
handle-as="json"
params="{state: "closed", page: "1"}"
last-response="{{ajaxResponse}}"></iron-ajax> -->
<iron-ajax
auto
url="https://www.googleapis.com/drive/v3/about"
params = "{{ajaxParams}}"
handle-as="json"
with-credentials
last-response="{{ajaxResponse}}"></iron-ajax>
<div class="card">
<template is="dom-repeat" items="[[ajaxResponse]]">
<div class="horizontal-section">
<p>[[index]]: [[item.title]]</p>
</div>
</template>
</div>
<div class="card">
Response Data: [[ajaxResponse]]
Params: [[ajaxParams.fields]]
</div>
</template>
<script>
Polymer({
is: 'doc-create',
properties: {
fields: {
type: String,
value: 'user'
},
apikey: {
type: String,
value: 'ya29.CjBVA-xV9TJ9cS25hx9qJvEgD1w'
},
ajaxParams: {
type: String,
computed: 'processParams(fields, apikey)'
}
},
processParams: function(fields, apikey) {
return {
fields: fields,
key: apikey
};
}
// ,
// ready: function(){
// var request = api.url.get({
// shortUrl: 'oo.gl/fbsS'
// });
// request.execute(function(resp) {
// console.log(resp);
// });
// }
});
</script>
</dom-module>
Что я делаю неправильно??? Консоль Screeshootof
2 ответа
Решение здесь: https://github.com/firebase/polymerfire/issues/108
Используется затем с использованием "signinwithcreditials".
TL;DR - Вы не авторизуете запрос должным образом. Вам необходимо правильно указать токен, а не ключ API.
Ошибка 401 обычно является ошибкой авторизации, что означает отсутствие маркера доступа или недостаточные области действия. Хотя я не слишком знаком с iron-ajax, в этом примере есть одна странность.
Значение apiKey, по-видимому, является токеном доступа, а не ключом API (на основе префикса ya29.) Если вы предполагали, что это токен доступа, его следует передать через заголовок авторизации (Authorization: Bearer your_token_value
) или через параметр запроса с именем access_token
,
Если вы имели в виду, что это ключ API, обратите внимание, что в этом случае ключей API недостаточно. Конкретный API работает с пользовательскими данными и требует авторизованного пользователем токена доступа Outh2. Ключи API не привязаны к пользователям и не дают необходимых разрешений.