0

我正在使用 Polymerfire 进行身份验证。来自谷歌 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 不太熟悉,但示例中有一个奇怪之处。

apiKey 值似乎是访问令牌,而不是 API 密钥(基于 ya29 前缀)。如果您打算将其作为访问令牌,则应通过 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

使用然后授权使用“signinwithcreditials”。

于 2016-09-08T18:13:39.763 回答