Не удается получить доступ к 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 не привязаны к пользователям и не дают необходимых разрешений.

Другие вопросы по тегам