Синхронизация базы данных с таблицей Google Fusion - PullRequest
1 голос
/ 02 февраля 2011

У меня проблемы с определением API Google .. Я пытаюсь вставить данные в таблицу Fusion с помощью приложения Coldfusion ..

<cfhttp  url="https://www.google.com/accounts/ClientLogin"  method="post" charset="utf-8">
<cfhttpparam type="formfield" name="accountType" value="GOOGLE"></cfhttpparam>
<cfhttpparam type="formfield" name="Email" value="MYUSERNAME"></cfhttpparam>
<cfhttpparam type="formfield" name="Passwd" value="MY PASSWORD"></cfhttpparam>
<cfhttpparam type="formfield" name="accountType" value="GOOGLE"></cfhttpparam>
<cfhttpparam type="formfield" name="service" value="fusiontables"></cfhttpparam>
</cfhttp>

это возвращается с

SID=DQAAALoAAAC5eSJUrVB_WVchS1plunfW2YPUTadHAxoEbE0xMcOzQxeTloc2RWWBjoJi4jKm6NIiFbGbV_IQ3vuY9bl-Z0RS64OFAy5aUY-Do_nX8DpPhVkEyBzDScJidi73G7ZqWmkdykkIGCBrr7MLa-eBMrXZvLJP0D21xJTjxRWyeM4xuEMQGhEbnWwBL9RnEByr5Rsgzx7dl9n4tsYQOvaGV3ZcMlT0CooS2__orwC12UH7eKCk-REKzbX5Z-bbu4EdLps LSID=DQAAALwAAABV7lz-YRh02pR7IlWkKidScbYTQArBWnaAJpAlZQ9rgtgmdQCSBuIZQQ21QDXZLORwTAyDi-34Mjs8SKvI7ronBSuniDW2SGipYoUhZDEjxwR55DQc1AaI3JgGPMc69YGAVv-_EMwXlS7elWO6lDW-G4PTR6Aqa0DO3y7Iig-L7g2b7zMFq32JIvjUj5rofcykF27T8sOuhd0Z4XTvgO-18Kp2z8o6EK_5qjZcHPmih0GB6LeSElBo2wjah1TM2u0 Auth=DQAAALwAAADYQbciaOLab2Aw_QghTO8hR0DPDOjoWZVKeJ-ApGwoUz7OgcqVtSHMUvRHHZoKys5ygjhm2FiHSh1CvW1SicOvajwRZSstvghtsCQl-y7LeT8TMkeCj5ZIqy8A05wg1YjCz3F3eDz9TImtlvGij7IOdWJ3Ae4NE8WQdC0Js5Laccebhgjj7Lk9FkRgG9c3yRyGhu7LmsRbtLjfv5jwGoozDuCcx6b79bECoR8qABkT-e5HgF7sWjYbLfz667OCeA0 

Теперь я пытаюсь вставить в свою таблицу ... Я передаю значение auth сверху .. Я не могу найти нигде в Google Документы, какие поля аутентификации должны быть ... любая помощь будет принята с благодарностью ..

<cfhttp url="https://www.google.com/fusiontables/api/query" method="post" charset="utf-8">
<cfhttpparam type="formfield" name="sql" value="INSERT INTO 423555 (id, outcode,lat,lng) VALUES ('1','W14',1231232,-123123);"/>
<cfhttpparam type="header" name="Authorization" value="Auth"></cfhttpparam>
<cfhttpparam type="header" name="token" value="#listtoarray(cfhttp.FileContent,"=")[4]#"></cfhttpparam>
</cfhttp>

1 Ответ

5 голосов
/ 02 февраля 2011

AUTH должен быть токеном авторизации, который вы получили в ответе Google.

Из документов вы должны создать такой заголовок, как:

Authorization: GoogleLogin auth=yourAuthToken

Итак, этобудет

<cfhttpparam type="header" name="Authorization" value="GoogleLogin auth=#listtoarray(cfhttp.FileContent,"=")[4]#"></cfhttpparam>

Это предполагает, что #listtoarray (cfhttp.FileContent, "=") [4] # возвращает значение свойства Auth - я не рассчитал его, чтобы быть уверенным.

Я не думаю, просто взглянув на документы, нужен заголовок "токен".

Но, #listtoarray (cfhttp.FileContent, "=") [4] # являетсядействительно хрупкий способ сделать это.Если бы Google изменил порядок своего ответа или изменил бы его, ваш код больше не работал бы.

Я бы искал более надежный способ анализа ответа.Я, вероятно, разделил бы ответ на пробел и превратил бы его в структуру с именами в качестве ключей, тогда вы могли бы использовать что-то вроде

#response['auth']#
...