0

認証にPolymerfireを使用しています。応答は google REST API からの 401 です...

iron-ajax で Google API リクエストを行うことはできますか? それはoauthプレイグラウンドでうまく機能します...

コード:

<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>

私は何を間違っていますか??? コンソールのスクリーンショット

4

2 に答える 2

1

TL;DR - リクエストを適切に承認していません。API キーではなく、アクセス トークンを適切に指定する必要があります。

401 エラーは通常、認証エラーであり、アクセス トークンがないか、スコープが不十分であることを意味します。私は iron-ajax にあまり詳しくありませんが、サンプルには奇妙な点が 1 つあります。

apiKey の値は、(ya29 プレフィックスに基づく) API キーではなく、アクセス トークンのようです。これをアクセス トークンにするつもりである場合は、Authorization ヘッダー ( Authorization: Bearer your_token_value) または という名前のクエリ パラメータを介して渡す必要がありますaccess_token

API キーのつもりだった場合は、この場合は API キーでは不十分であることに注意してください。特定の API はユーザー データで動作し、ユーザーによって承認された Outh2 アクセス トークンが必要です。API キーはユーザーに関連付けられておらず、必要なアクセス許可を付与しません。

于 2016-09-07T19:13:05.670 に答える
0

ここでの解決策: https://github.com/firebase/polymerfire/issues/108

使用後、「signinwithcredentials」を使用して認証されます。

于 2016-09-08T18:13:39.763 に答える