2017-03-23 13 views
1

JavaScript V3 API経由でBloggerにアクセスしようとしています。私の(公開)テストブログにアクセスしようとすると、すべてが正常に動作します。Google Blogger APIエラー400

私は同じコードを使用しますが、私の(私的な)テストブログにアクセスしようとするとエラーが発生します。

次は私のコードAPI_KEYとblog_idの2番目の要素は、私のプライベートなブログです

 var client_id = ['WWWW', 'XXXX']; 
     var api_key = ['YYYY','ZZZZ']; 
     var discoveryDocs = ['https://www.googleapis.com/discovery/v1/apis/blogger/v3/rest']; 
     var scope = 'https://www.googleapis.com/auth/blogger.readonly'; 
     var blog_id = ['BLOG0', 'BLOG1']; 

     var appendResults = function(results) { 
      $('#results').append(JSON.stringify(results, undefined, 2) + '<hr/>'); 
     }; 

     getBlogs = function(client, key, blog) { 
      gapi.client.init({ 
       'apiKey': key, 
       'clientId': client, 
       'discoveryDocs': discoveryDocs, 
       'scope': scope 
      }).then(function() { 
       return gapi.client.blogger.posts.list({ 
        'blogId': blog 
       }); 
      }).then(function(d) { 
       return d; 
      }).then(function(response) { 
       appendResults(response); 
      }, function(reason) { 
       appendResults(reason); 
      }); 
     }; 

     gapi.load('client', function() { 
      for(i=0; i<api_key.length; i++) { 
       getBlogs(client_id[i], api_key[i], blog_id[i]); 
      } 
     }); 

です。

次は、私は、開発者コンソールのセットアップの資格をした私の応答

{ 
    "result": { 
    "kind": "blogger#postList", 
    "items": [ 
     { 
     "kind": "blogger#post", 
     "id": "XXXX", 
     "blog": { 
      "id": "XXXX" 
     }, 
     "published": "XXXX", 
     "updated": "XXXX", 
     "etag": "\"XXXX\"", 
     "url": "http://XXXX/2017/03/blog-post.html", 
     "selfLink": "https://www.googleapis.com/blogger/v3/blogs/XXXX/posts/XXXX", 
     "title": "", 
     "content": "XXXX", 
     "author": { 
      "id": "XXXX", 
      "displayName": "XXXX", 
      "url": "https://www.blogger.com/profile/XXXX", 
      "image": { 
      "url": "XXXX" 
      } 
     }, 
     "replies": { 
      "totalItems": "0", 
      "selfLink": "XXXX" 
     } 
     } 
    ], 
    "etag": "\"XXXX\"" 
    }, 
    "body": "{\n \"kind\": \"blogger#postList\",\n \"items\": [\n {\n \"kind\": \"blogger#post\",\n \"id\": \"XXXX\",\n \"blog\": {\n \"id\": \"639440130428294175\"\n },\n \"published\": \"XXXX\",\n \"updated\": \"XXXX\",\n \"etag\": \"\\\"XXXX\\\"\",\n \"url\": \"http://XXXX/2017/03/blog-post.html\",\n \"selfLink\": \"https://www.googleapis.com/blogger/v3/blogs/XXXX/posts/XXXX\",\n \"title\": \"\",\n \"content\": \"XXXX\",\n \"author\": {\n \"id\": \"XXXX\",\n \"displayName\": \"XXXX\",\n \"url\": \"https://www.blogger.com/profile/XXXX\",\n \"image\": {\n  \"url\": \"XXXX\"\n }\n },\n \"replies\": {\n \"totalItems\": \"0\",\n \"selfLink\": \"https://www.googleapis.com/blogger/v3/blogs/XXXX/posts/XXXX/comments\"\n }\n }\n ],\n \"etag\": \"\\\"XXXX\\\"\"\n}\n", 
    "headers": { 
    "date": "XXXX", 
    "content-encoding": "gzip", 
    "vary": "Origin, X-Origin", 
    "content-length": "576", 
    "pragma": "no-cache", 
    "server": "GSE", 
    "etag": "\"XXXX\"", 
    "content-type": "application/json; charset=UTF-8", 
    "cache-control": "no-cache, no-store, max-age=0, must-revalidate", 
    "expires": "XXXX" 
    }, 
    "status": 200, 
    "statusText": null 
} 

{ 
    "result": { 
    "error": { 
     "errors": [ 
     { 
      "domain": "global", 
      "reason": "invalid", 
      "message": "We're sorry, but the requested resource could not be found." 
     } 
     ], 
     "code": 400, 
     "message": "We're sorry, but the requested resource could not be found." 
    } 
    }, 
    "body": "{\n \"error\": {\n \"errors\": [\n {\n \"domain\": \"global\",\n \"reason\": \"invalid\",\n \"message\": \"We're sorry, but the requested resource could not be found.\"\n }\n ],\n \"code\": 400,\n \"message\": \"We're sorry, but the requested resource could not be found.\"\n }\n}\n", 
    "headers": { 
    "date": "XXXX", 
    "content-encoding": "gzip", 
    "vary": "Origin, X-Origin", 
    "content-length": "160", 
    "server": "GSE", 
    "content-type": "application/json; charset=UTF-8", 
    "cache-control": "private, max-age=0", 
    "expires": "XXXX" 
    }, 
    "status": 400, 
    "statusText": null 
} 

です。私はlocalhost:5000経由でこれにアクセスしています。これは、開発者用コンソールでlocalhostを有効なドメインとしてセットアップしました。私はそれが手掛かりかもしれないと思うことができ

唯一のことは、これは私の要求の原点が無効であることを私に言っかもしれないが、私は確かに言うことはできません

"result": { 
    "error": { 
     "errors": [ 
     { 
      "domain": "global", 
      "reason": "invalid", 
      "message": "We're sorry, but the requested resource could not be found." 
     } 
     ], 
     "code": 400, 
     "message": "We're sorry, but the requested resource could not be found." 
    } 

です。

私は同じ(プライベート)ブログを公開して再実行すると、このコードは両方のブログIDで動作します。

どこが間違っていますか?

+0

を経由して、このAPIをテストすることができます。 https://developers.google.com/blogger/docs/3.0/reference/posts/list(記事が非公開のブログに投稿されている場合は認証が必要です)を参照してください。また、スコープは 'https:// www.googleapis.com/auth/blogger.readonly'から' https:// www.googleapis.com/auth/blogger'に変更する必要があります –

答えて

0

Blogger APIを使用するには、プライベートブログの情報にアクセスするときにアプリケーションにOAuth 2.0トークンが必要です(documentation hereを参照)。 APIキーを使用するだけでは、リクエストが機能しません。

Authorizationは、非公開のブログに投稿が必要な場合に必要です。投稿が公開されているブログにある場合、このメソッドは承認なしで呼び出すことができます。

のOAuthトークンを使用する場合にも、適用範囲が異なっている -

ここでOAuth 2.0の範囲情報は、BloggerのAPIのためです:

https://www.googleapis.com/auth/blogger 

OAuth 2.0の、あなたのアプリケーションを使用してアクセスを要求するにはスコープ情報、アプリケーション登録時にGoogleが提供する情報(クライアントIDやクライアントシークレットなどの など)が必要です。

あなたはプライベートのブログにアクセスするためのOAuth認証が必要になりますhttps://developers.google.com/apis-explorer/#search/blogger.posts.list/m/blogger/v3/blogger.posts.list

関連する問題