gpt4 book ai didi

post - 在 Chrome 扩展程序中向 Tumblr 的 API 发出 POST 请求

转载 作者:行者123 更新时间:2023-12-04 05:46:53 26 4
gpt4 key购买 nike

我正在尝试使用他们的 API 和 chrome_ex_oauth 将文本发布到 Tumblr。

  • API:http://www.tumblr.com/docs/en/api/v2#posting
  • chrome_ex_oauth:http://code.google.com/chrome/extensions/tut_oauth.html

  • 获得授权作品的全过程。我无法上类的是做一个POST。我正在做以下事情:

    编辑:我已经更新了代码以反射(reflect) Rob W 对 body 字段的正确建议
    var stringify = function (parameters) {
    var params = [];
    for(var p in parameters) {
    params.push(encodeURIComponent(p) + '=' +
    encodeURIComponent(parameters[p]));
    }
    return params.join('&');
    };

    var onAuthorized = function() {
    var url = 'http://api.tumblr.com/v2/blog/jindie.tumblr.com/post';
    var request = {
    'method': 'POST',
    'headers':{
    'Content-Type':'application/x-www-form-urlencoded'
    },
    'body': stringify({
    'type': 'text',
    'state': 'draft',
    'title': 'Test post...',
    'body': 'Hello, World!'
    })
    };

    oauth.sendSignedRequest(url, function(responseText, xhr){alert(responseText);}, request);
    };

    oauth.authorize(onAuthorized);

    我一直在检查代码,并思考可能有什么问题,但我真的不知道。你?

    你知道我哪里错了吗?

    最佳答案

    当文档没有帮助时查看源代码, chrome_ex_oauth.js .

    您必须使用 'body'而不是 'parameters' :

    var request = {
    'method': 'POST',
    'body': {

    调试

    为了找到原因,我按照以下步骤(注释了我的想法):
  • 显然,帖子正文是空的。所以,API 的实现肯定是错误的。
  • Ctrl + F sendSignedRequest :

    ChromeExOAuth.prototype.sendSignedRequest = function(url, callback, opt_params) {
    var method = opt_params && opt_params['method'] || '得到';
    var body = opt_params && opt_params['body'] ||空值;
    var params = opt_params && opt_params['参数'] || {};
    var headers = opt_params && opt_params['headers'] || {};
    var signedUrl = this.signURL(url, method, params);
    //唔...? `params` 在哪里被传递......?
    ChromeExOAuth.sendRequest(method, signedUrl, headers, body, function (xhr) {
    如果(xhr.readyState == 4){
    回调(xhr.responseText,xhr);
    }
    });
    };
  • signURL不修改 params ,所以这不是问题。
  • Ctrl + F sendRequest :
    ChromeExOAuth.sendRequest = 函数(方法、网址、标题、正文、回调){
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = 函数(数据){
    回调(xhr,数据);
    }
    xhr.open(方法,网址,真);
    如果(标题){。 . . }
    xhr.send(body);//<-- !!!
    };
  • 明白了! body必须使用,而不是 parameters .
  • 回溯 body变量到 request['body'] (见 2)。
  • 关于post - 在 Chrome 扩展程序中向 Tumblr 的 API 发出 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10568812/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com