首页
学习
活动
专区
圈层
工具
发布

错误400
EN

Stack Overflow用户
提问于 2017-03-23 14:46:32
回答 1查看 1.1K关注 0票数 1

我正在尝试通过JavaScript V3 API访问博客。如果我尝试访问我的(公共)测试博客,一切都会像预期的那样工作。

如果我使用相同的代码,但试图访问我的(私有)测试博客,我会得到一个错误。

以下是我的代码

代码语言:javascript
复制
        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]);
            }
        });

api_key和blog_id中的第二个元素是我的私人博客。

以下是我的回应

代码语言:javascript
复制
{
  "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
}

代码语言:javascript
复制
{
  "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设置为一个有效域。

我唯一能想到的可能是

代码语言:javascript
复制
"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。

我哪里出问题了?

EN

回答 1

Stack Overflow用户

发布于 2017-03-27 07:01:20

Blogger要求您的应用程序在访问私有博客上的信息时必须具有OAuth 2.0令牌(请参阅这里的文件)。只有使用API密钥才不会使请求工作。

如果这些帖子是在私人博客上发布的,那么授权是必需的。如果这些帖子是在一个公开的博客上发布的,那么这个方法可以不经授权就被调用。

而且,当使用OAuth令牌时,作用域是不同的-

下面是Blogger的OAuth 2.0作用域信息: https://www.googleapis.com/auth/blogger 要使用Google2.0请求访问,您的应用程序需要范围信息以及OAuth在应用程序注册期间提供的信息(例如客户机ID和/或客户端机密)。

您可以通过https://developers.google.com/apis-explorer/#search/blogger.posts.list/m/blogger/v3/blogger.posts.list测试此API。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42979441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档