2016-09-05 7 views
0

私はPolymerfireを使用して認証しています。応答はGoogleのREST APIから401です...ポリマーにIron-ajaxを含むGoogle Rest APIにアクセスできない

あなたは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> 

私が間違って何をやっています? Screeshootof console

+0

ChromeDevToolsのネットワークパネル、具体的には401応答の本体 –

答えて

1

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

401エラーは通常、アクセストークンがないかスコープが不十分であることを意味する認証エラーです。私は鉄アヤックスにあまり慣れていませんが、サンプルには奇妙なものがあります。

apiKeyの値は、APIキー(ya29接頭辞に基づく)ではなく、アクセストークンのように見えます。アクセストークンにする場合は、Authorizationヘッダー(Authorization: Bearer your_token_value)またはクエリパラメータはaccess_tokenとなります。

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

関連する問題