dba*_*ugh 4 oauth google-apps-script yelp
我正在尝试使用Google Apps脚本查询Yelp搜索Api并将结果放入电子表格中.我使用此示例作为模型调用yelp时遇到问题:
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
Run Code Online (Sandbox Code Playgroud)
https://developers.google.com/apps-script/class_oauthconfig
此类仅具有设置Yelp似乎不提供的访问令牌URL的方法.他们只是直接提供令牌和令牌秘密.我认为这些将被设置为消费者密钥和秘密,但我还没有找到办法.
Yelp API使用oAuth1.0a来授权和识别API调用者,而不是可能正在使用该应用程序的最终用户.这不像是一个必须让用户登录的Twitter场景.因此,您不需要任何访问令牌URL或其他详细信息.您可以创建所有必要的令牌以开始使用.设置完所有内容后,您的API控制台应如何显示(出于显而易见的原因,我对我的密钥进行了模糊处理) -

现在,您需要使用UrlFetchApp从服务器端进行API调用,而不是使用jQuery AJAX API,因为Yelp API似乎不允许使用CORS,并且HtmlService不允许使用JSONP.否则你将在控制台中收到如下错误 -

最后,这里有一些示例代码可以帮助您入门.我基于他们的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
Run Code Online (Sandbox Code Playgroud)
我还添加了几个GS脚本文件,其中包含oAuth JS代码的内容和来自所提供链接的SHA1 JS代码(只需将脚本编辑器中的粘贴复制到新文件中).但是,如果您喜欢冒险,您还可以使用Utilities API手动签名和编码必要的oAuth参数.
希望这可以帮助.我能够使用所有提供的样本获得Yelp响应.
| 归档时间: |
|
| 查看次数: |
6093 次 |
| 最近记录: |