解决方案 »

  1.   

    400 请求出错 由于语法格式有误,服务器无法理解此请求。我觉得是你的请求数据有问题oAuth2.0认证  你提交数据过去登陆的过程是在人家服务器端完成的,如果认证通过会给你access_token然后会根据你的配置跳转到你客户端的http的接口地址应该是获取access_token的时候就出错了,和跨域没关系
      

  2.   


    可是我是在获取到access_token之后,调用查询数据的时候出错的呀,这是我查询的那一部分的代码:
    if(access_token != "")
    {
                    var httpRequest = createXMLHttp();
                    var head = "";
                    var arg = "";
                    var ret = "";
                    var url = "https://api.dropbox.com/1/datastores/get_or_create_datastore";                head = "Bearer " + access_token;
                    arg = "dsid=default";                httpRequest.open("POST", url, false);
                    httpRequest.setRequestHeader("Authorization", head);
                    httpRequest.send(arg);
                    ret = JSON.parse(httpRequest.responseText);
                    console.log("ret:", ret);
    }
      

  3.   


    这个也试过,不行。你看看代码有问题吗?var head = "Bearer " + access_token;                var settings = {
                        type: "POST",
                        url: "https://api.dropbox.com/1/datastores/get_or_create_datastore",
                        data: { dsid: "default" },
                        error: function (XHR, textStatus, errorThrown) {
                            alert("XHR="+XHR+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
                        },
                        success: function (data,textStatus) {
                            console.log("data:",data);
                            $("body").append(data);
                        },
                        headers: {
                            "Authorization": head
                        }
                    };
                    $.ajax(settings);
      

  4.   

    你确定授权成功了,但是查询的时候出问题
    你的这段代码是官方给的例子吗?
    官方不是提供了js 的sdk么,看看他的列子和你写的有什么不同,请求头信息里面的数据抓一下对比对比。
    400错误就是你发送的问题
      

  5.   


    这个也试过,不行。你看看代码有问题吗?var head = "Bearer " + access_token;                var settings = {
                        type: "POST",
                        url: "https://api.dropbox.com/1/datastores/get_or_create_datastore",
                        data: { dsid: "default" },
                        error: function (XHR, textStatus, errorThrown) {
                            alert("XHR="+XHR+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
                        },
                        success: function (data,textStatus) {
                            console.log("data:",data);
                            $("body").append(data);
                        },
                        headers: {
                            "Authorization": head
                        }
                    };
                    $.ajax(settings);
    你这样肯定不行吧,使用jquery的jsonp插件
     url="http://localhost:8080/WorkGroupManagment/open/getGroupById"
       +"?id=1&callback=?";
    $.jsonp({
     "url": url,
     "success": function(data) {
       $("#current-group").text("当前工作组:"+data.result.name);
     },
      "error": function(d,msg) {
       alert("Could not find user "+msg);
      }
    });
    你的server段代码不用改动
      

  6.   


    这个也试过,不行。你看看代码有问题吗?var head = "Bearer " + access_token;                var settings = {
                        type: "POST",
                        url: "https://api.dropbox.com/1/datastores/get_or_create_datastore",
                        data: { dsid: "default" },
                        error: function (XHR, textStatus, errorThrown) {
                            alert("XHR="+XHR+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
                        },
                        success: function (data,textStatus) {
                            console.log("data:",data);
                            $("body").append(data);
                        },
                        headers: {
                            "Authorization": head
                        }
                    };
                    $.ajax(settings);
    你这样肯定不行吧,使用jquery的jsonp插件
     url="http://localhost:8080/WorkGroupManagment/open/getGroupById"
       +"?id=1&callback=?";
    $.jsonp({
     "url": url,
     "success": function(data) {
       $("#current-group").text("当前工作组:"+data.result.name);
     },
      "error": function(d,msg) {
       alert("Could not find user "+msg);
      }
    });
    你的server段代码不用改动
    网上搜一下jQuery插件-jquery-jsonp,看看怎么用。挺简单的
      

  7.   

    你确定授权成功了,但是查询的时候出问题
    你的这段代码是官方给的例子吗?
    官方不是提供了js 的sdk么,看看他的列子和你写的有什么不同,请求头信息里面的数据抓一下对比对比。
    400错误就是你发送的问题
    这个不是用的JS的SDK,他的JS例子里面是直接调用封装好的接口来实现的,他的例子是这样的:
    var client = new Dropbox.Client({key: APP_KEY});// Try to finish OAuth authorization.
    client.authenticate({interactive: false}, function (error) {
        if (error) {
            alert('Authentication error: ' + error);
        }
    });if (client.isAuthenticated()) {
        // Client is authenticated. Display UI.
    }然后我帖子里面的代码是我自己按照他的HTTP说明文档写的,文档里面就说当获取到token之后,发送这样一个HTTP请求,就可以查询和操作数据了这是官方文档里  Using the Datastore HTTP API的说明Here's an example HTTP request:POST /1/datastores/get_or_create_datastore HTTP/1.1
    Authorization:  Bearer 2KpF5HU1WC8AAAAAAAAAAXVIh5sWjCPQQ76ggWgUZX7CgP9QfJlC15RDC3X8LYc6dsid=default
    And here's an example response from the server:HTTP/1.1 200 OK
    Content-Type: text/javascript{"handle": "1PuUJ3DvMI71OYx1gcqWHzzdva2EpF", "rev": 0, "created": true}
    请求的地址是HTTPS,抓包抓不到吧?
      

  8.   


    这个也试过,不行。你看看代码有问题吗?var head = "Bearer " + access_token;                var settings = {
                        type: "POST",
                        url: "https://api.dropbox.com/1/datastores/get_or_create_datastore",
                        data: { dsid: "default" },
                        error: function (XHR, textStatus, errorThrown) {
                            alert("XHR="+XHR+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
                        },
                        success: function (data,textStatus) {
                            console.log("data:",data);
                            $("body").append(data);
                        },
                        headers: {
                            "Authorization": head
                        }
                    };
                    $.ajax(settings);
    你这样肯定不行吧,使用jquery的jsonp插件
     url="http://localhost:8080/WorkGroupManagment/open/getGroupById"
       +"?id=1&callback=?";
    $.jsonp({
     "url": url,
     "success": function(data) {
       $("#current-group").text("当前工作组:"+data.result.name);
     },
      "error": function(d,msg) {
       alert("Could not find user "+msg);
      }
    });
    你的server段代码不用改动额,我刚刚发的所有的代码都是在客户端的JS文件里面的,难道发HTTP请求是应该在服务端实现吗?之前都是做客户端这一款的东西,服务端完全不了解啊····