Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Javascript更新融合表_Javascript_Google Maps_Google Maps Api 3_Google Fusion Tables_Google Oauth - Fatal编程技术网

用Javascript更新融合表

用Javascript更新融合表,javascript,google-maps,google-maps-api-3,google-fusion-tables,google-oauth,Javascript,Google Maps,Google Maps Api 3,Google Fusion Tables,Google Oauth,因此,我一直在尝试通过此处指定的Google fusion table API更新fusion table: 我相信我在认证方面遇到了障碍。我一直在尝试使用OAuth2.0进行身份验证 因此,首先是目前的问题。这就是我通常建造这个东西的方式。首先,我使用fusion表中的信息填充要更新的项目数组: $(document).ready(function () { $.ajax({ cache: false, async: true,

因此,我一直在尝试通过此处指定的Google fusion table API更新fusion table:

我相信我在认证方面遇到了障碍。我一直在尝试使用OAuth2.0进行身份验证

因此,首先是目前的问题。这就是我通常建造这个东西的方式。首先,我使用fusion表中的信息填充要更新的项目数组:

$(document).ready(function () {
        $.ajax({
            cache: false,
            async: true,
            type: "GET",
            dataType: "json",
            url: "https://www.googleapis.com/fusiontables/v1/query?sql=SELECT ROWID, ThreePartAddress, Latitude, Longitude FROM <table name> WHERE Latitude != '0' AND Longitude != '0' LIMIT 100&key=<key name>",
            contentType: "application/json;charset=utf-8",
            success: function (m) { if (m != null) { meetings = m; } },
            error: function (e) { console.log(e.statusText); }
        });
    });
现在我遇到了问题。我去获取OAuth中的登录令牌。我是从StackOverflow的另一个问题中得出这个结论的。这似乎有效,但只有一次。我从谷歌获取我的客户id:

var GOOGLE_AUTH_URL = "https://accounts.google.com/o/oauth2/auth";
     var GOOGLE_CLIENT_ID = "blahblah.apps.googleusercontent.com";
     var PLUS_ME_SCOPE = "https://www.googleapis.com/auth/plus.me";

     var button = document.createElement("button");
     button.innerText = "Authenticate with Google";
     button.onclick = function() {
       var req = {
         "authUrl" : GOOGLE_AUTH_URL,
         "clientId" : GOOGLE_CLIENT_ID,
         "scopes" : [ PLUS_ME_SCOPE ],
       };
       oauth2.login(req, function(token) {
            loginToken = token;
           }, function(error) {
             alert("Error:\n" + error);
           });
     };
     document.body.appendChild(button);
我在另一个函数中查看纬度和经度,并更新会议。然后我开始在那个数组上循环。我开始构建一个查询来更新表名,然后启动一个POST请求来完成这项工作

function uploadLatLngs() {
        for (row = 1; // first row (0) is column headers
                meetings.rows.length > row;
                row++) {

            var lat = meetings.rows[row][2];
            var lng = meetings.rows[row][3];
            if (lat != '' && lat != null && lng != '' && lng != null && !(lat == 0 && lng == 0)) {
                var data = "?sql=UPDATE <table name> SET Latitude = " + lat + ", Longitude = " + lng + " WHERE ROWID = '" + meetings.rows[row][0] + "'";

                var url = "https://www.google.com/fusiontables/v1/query/" + data;

                //"&access_token=" + loginToken;

                $.ajax({
                    type: "POST",
                    contentType: "application/json",
                    url: url,
                    beforeSend: function (xhr) {
                        xhr.setRequestHeader("Authorization", "Bearer " + loginToken);
                    },
                    success: function run(data) { console.log(data); }
                });
            }
        }
    }

oauthWindow是我授权的窗口,您可能想在这个问题中添加google fusion表。当您确实想更新fusion tables fusiontables范围时,为什么要使用plus.me范围?嗯,我不确定!我从另一个示例中提取了身份验证部分。你认为我应该怎么做?
function uploadLatLngs() {
        for (row = 1; // first row (0) is column headers
                meetings.rows.length > row;
                row++) {

            var lat = meetings.rows[row][2];
            var lng = meetings.rows[row][3];
            if (lat != '' && lat != null && lng != '' && lng != null && !(lat == 0 && lng == 0)) {
                var data = "?sql=UPDATE <table name> SET Latitude = " + lat + ", Longitude = " + lng + " WHERE ROWID = '" + meetings.rows[row][0] + "'";

                var url = "https://www.google.com/fusiontables/v1/query/" + data;

                //"&access_token=" + loginToken;

                $.ajax({
                    type: "POST",
                    contentType: "application/json",
                    url: url,
                    beforeSend: function (xhr) {
                        xhr.setRequestHeader("Authorization", "Bearer " + loginToken);
                    },
                    success: function run(data) { console.log(data); }
                });
            }
        }
    }
OPTIONS https://www.google.com/fusiontables/v1/query/?sql=UPDATE%<Table name>,%20Longitude%20=%20-77.09161899999998%20WHERE%20ROWID%20=%20%2725%27 405 (Method Not Allowed) jquery-1.4.2.min.js:128
OPTIONS https://www.google.com/fusiontables/v1/query/?sql=UPDATE%20<table name>,%20Longitude%20=%20-77.09161899999998%20WHERE%20ROWID%20=%20%2725%27 No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:53104' is therefore not allowed access.
Client ID for web application
Client ID   XXXX
Email address   XXX
Client secret   XXXX
Redirect URIs   http://localhost:53104/GoogleMapsTest/Testing/oauthWindow.html
Javascript Origins  http://localhost:53104