scripts script google docs developers developer apps app oauth google-apps-script yelp

docs - API de Yelp Aplicación de Google Script OAuth



script developers (1)

La API de Yelp usa oAuth1.0a para autorizar e identificar a la persona que llama a la API, no al usuario final que podría estar usando la aplicación. Esto no es como un escenario de Twitter donde tienes que dejar que tus usuarios inicien sesión. Por lo tanto, no necesita ninguna URL token de acceso u otros detalles. Puede crear todos los tokens necesarios para comenzar. Así es como se verá tu consola API una vez que todo esté configurado (he ofuscado mis llaves por razones obvias) -

Ahora, deberá realizar las llamadas de la API desde el servidor utilizando UrlFetchApp y no usar las API de jQuery AJAX, ya que esa API de Yelp no parece permitir CORS y JSONP no está permitida con HtmlService. De lo contrario, obtendrá los siguientes errores en la consola:

Por último, aquí hay un código de muestra para comenzar. Basé estos en su muestra de JavaScript -

var auth = { consumerKey: "YOURKEY", consumerSecret: "YOURSECRET", accessToken: "YOURTOKEN", accessTokenSecret: "YOURTOKENSECRET", }; var terms = ''food''; var near = ''San+Francisco''; var accessor = { consumerSecret: auth.consumerSecret, tokenSecret: auth.accessTokenSecret }; var parameters = []; parameters.push([''term'', terms]); parameters.push([''location'', near]); parameters.push([''oauth_consumer_key'', auth.consumerKey]); parameters.push([''oauth_consumer_secret'', auth.consumerSecret]); parameters.push([''oauth_token'', auth.accessToken]); var message = { ''action'': ''http://api.yelp.com/v2/search'', ''method'': ''GET'', ''parameters'': parameters }; OAuth.setTimestampAndNonce(message); OAuth.SignatureMethod.sign(message, accessor); var parameterMap = OAuth.getParameterMap(message.parameters); parameterMap.oauth_signature = OAuth.percentEncode(parameterMap.oauth_signature) var url = OAuth.addToURL(message.action,parameterMap); var response = UrlFetchApp.fetch(url).getContentText(); var responseObject = Utilities.jsonParse(response); //have my JSON object, do whatever we want here, like add to spreadsheets

También agregué un par de archivos de script GS con los contenidos del código oAuth JS y el código SHA1 JS de los enlaces provistos (simplemente copie y pegue en los archivos nuevos en el editor de scripts). Sin embargo, si te sientes aventurero, también puedes utilizar las API de utilidades para firmar manualmente y codificar los parámetros oAuth necesarios.

Espero que esto ayude. Pude obtener respuestas de Yelp con todas las muestras proporcionadas.

Intento utilizar Google Apps Script para consultar la API de búsqueda de Yelp y poner los resultados en una hoja de cálculo. Tengo problemas al hacer la llamada para gritar usando este ejemplo como modelo:

var consumerKey = "... register your app with Twitter ..."; var consumerSecret = "... register your app with Twitter ..."); var oauthConfig = UrlFetchApp.addOAuthService("twitter"); oauthConfig.setAccessTokenUrl("http://api.twitter.com/oauth/access_token"); oauthConfig.setRequestTokenUrl("http://api.twitter.com/oauth/request_token"); oauthConfig.setAuthorizationUrl("http://api.twitter.com/oauth/authorize"); oauthConfig.setConsumerKey(consumerKey); oauthConfig.setConsumerSecret(consumerSecret); // "twitter" value must match the argument to "addOAuthService" above. var options = { "oAuthServiceName" : "twitter", "oAuthUseToken" : "always" }; var url = "http://api.twitter.com/1/statuses/user_timeline.json"; var response = UrlFetchApp.fetch(url, options); var tweets = JSON.parse(response.getContentText()); // Handle tweets

https://developers.google.com/apps-script/class_oauthconfig

Esta clase solo tiene métodos para configurar las URL token de acceso que Yelp no parece proporcionar. Simplemente proporcionan el Token y Token Secret directamente. Supuse que estos se establecerían como la clave del consumidor y el secreto, pero no he encontrado la manera.