我试图在YQL查询中隐藏API密钥。为此,我尝试遵循这个职位 (也由同一作者这里解释)。当我尝试使用URI模板运行查询时,将返回以下警告:
"warning": "Missing template variables (BungieAPIKey)"以下是我所采取的步骤:
yql.storage.admin将API键保存在insert into yql.storage.admin (value) values ("set BungieAPIKey='YOUR_KEY' on uritemplate;")中https://developer.yahoo.com/yql/console/?env=store://XXXXXXXXXX)将环境加载到控制台select * from json where url in (select url from uritemplate where template='http://bungie.net/videos/{BungieAPIKey}/{user}/{page}' and user='foo' and page='bar')以下是返回的JSON:
{
"query": {
"count": 0,
"created": "2015-01-13T16:58:57Z",
"lang": "en-US",
"diagnostics": {
"publiclyCallable": "true",
"warning": "Missing template variables (BungieAPIKey)",
"redirect": {
"from": "http://bungie.net/videos//foo/bar",
"status": "301",
"content": "http://www.bungie.net/videos/foo/bar"
},
"url": {
"execution-start-time": "0",
"execution-stop-time": "573",
"execution-time": "573",
"http-status-code": "404",
"http-status-message": "Not Found",
"content": "http://bungie.net/videos//foo/bar"
},
"error": "Invalid JSON document http://bungie.net/videos//foo/bar",
"user-time": "574",
"service-time": "573",
"build-version": "0.2.212"
},
"results": null
}
}为了缩小问题范围,我在一个干净的YQL控制台(无env集)中尝试了以下查询:
set BungieAPIKey='YOUR_KEY' on uritemplate;
select url from uritemplate where template='http://bungie.net/videos/{BungieAPIKey}/'运行这个也给了我同样的警告。为什么我的模板变量不从我设置的环境变量中提取?
发布于 2015-01-13 19:45:10
看起来,由于某种原因,uritemplate上的set x='y‘没有得到尊重。如果没有这一点,您可以选择拥有一个接受类型化参数的自定义表,比如apiKey。然后,您可以拥有以下内容:
use 'http://location-of-custom-table' as tablename;
set apiKey='foo' on tablename;
select * from tablename; 在上述情况下,apiKey将被传递到自定义表中,您可以将它附加到javascript中并创建您的url。
https://stackoverflow.com/questions/27927513
复制相似问题