用Javascript更新融合表
因此,我一直在尝试通过此处指定的Google fusion table API更新fusion table: 我相信我在认证方面遇到了障碍。我一直在尝试使用OAuth2.0进行身份验证 因此,首先是目前的问题。这就是我通常建造这个东西的方式。首先,我使用fusion表中的信息填充要更新的项目数组:用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,
$(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