我正在尝试对 OpenWeatherMap 进行 API 调用。flutter run当我在终端中执行时,尽管我已经以适当的方式生成了 API 密钥并且它处于活动状态并正确复制,但打印出的是无效 API 密钥的代码response.statusCode。401
const APIKey = '69f9afe03f52ef5c83887fc86dd79d99';
void getData() async {
http.Response response = await http.get(Uri.parse('https://api.openweathermap.org/data/3.0/onecall?lat=$latitude&lon=$longitude&appid=$APIKey'));
if (response.statusCode == 200) {
String data = response.body;
var decodedData = jsonDecode(data);
print(decodedData);
} else {
print(
response.statusCode,
);
}
}
Run Code Online (Sandbox Code Playgroud)
Flutter 的地理定位器包用于分配纬度和经度。如何401纠正错误?
我想在我的 flutter 应用程序中使用 API 密钥,并且已经了解到enenved包是隐藏 API 密钥的好工具。
\n问题是我无法让它工作。这就是我所做的:
\n$ flutter pub add envied\n$ flutter pub add --dev envied_generator\n$ flutter pub add --dev build_runner\nRun Code Online (Sandbox Code Playgroud)\nAPI_KEY=1234567890\nRun Code Online (Sandbox Code Playgroud)\nimport \'package:envied/envied.dart\';\n\npart \'env.g.dart\';\n\n@Envied(path: \'.env\')\nabstract class Env {\n @EnviedField(varName: \'API_KEY\')\n static final apiKey = _Env.apiKey;\n}\nRun Code Online (Sandbox Code Playgroud)\nflutter pub run build_runner build\nRun Code Online (Sandbox Code Playgroud)\n然后我得到这个错误:
\n[SEVERE] envied_generator:envied on lib/env/env.dart:\n\nEnvied can only handle …Run Code Online (Sandbox Code Playgroud) 我正面临着我正在开发的小型Web应用程序的问题:我的HTML源代码将集成到另一个站点的HTML源代码中.我在我的代码中使用了Google地图,因此我必须传递API密钥才能在当前域上加载Google Maps脚本.
问题:我的代码将集成在两个不同的域上,需要两个不同的API密钥.我有这两个键,可以通过JavaScript识别有效的键(在document.location.host的帮助下),但是如何设置用正确的键动态加载脚本?
供参考:密钥在脚本加载URL中作为参数传递:
<script src="http://maps.google.com/maps?file=api&v=2&key=abcdefg" type="text/javascript">
</script>
Run Code Online (Sandbox Code Playgroud) 我想创建一个灵活的API Rest服务器.我将允许客户端使用HTTP或APIKEY进行身份验证.
我的问题是:将apikey添加到GET请求的正确方法是什么?我的问题是apikey污染了网址.
我想象这样的事情:/ book/1/apikey/s4cr4t!
我的公司帮助为多个客户开发谷歌地图网络应用程序.我个人不是开发人员,所以请原谅我提出一个其他人可能都很明显的问题.
我需要注册多个API密钥,因为我不希望在我的一个API密钥上超过25K.那么是否可以注册多个API密钥 - 每个客户一个?这将确保一个客户端不影响其余客户端,并且我个人不会超过api限制.
我发现了很多关于这方面的问题 - 我自己也很惭愧.
但无论我怎么努力,我都很简单,根本无法运行Maps API!
不是使用演示项目com.example.mapdemo,而不是我自己的项目.
我肯定已经注册了我的debug.keystore SHA1指纹,现在我的应用程序和com.example - 我也尝试了浏览器API密钥,每个人都说也可以.
但不是.
我总是得到:
06-16 11:21:29.860: E/Google Maps Android API(2382): Authorization failure. Please see https://developers.google.com/maps/documentation/android/start for how to correctly set up the map.
Run Code Online (Sandbox Code Playgroud)
我真的很开心,真的很生气.怎么可能没有完全彻底地描述这个问题,以便能够编程Android应用程序的人可以跟随并成功?
怎么样?
有人可以告诉我还有什么可能是错的吗?
附加组件:我根据规格设置了所有内容,从我的debug.keystore获取了我的密钥,使用com.example尝试了地图演示,使用我自己的应用程序包.不行.加:那个愚蠢的空窗.究竟是怎么回事...... :-(
在从URL中取消实现json时,设置api键值的最佳方法是什么.我正在使用的代码如下,但我不知道如何陈述api密钥
using (var webClient = new System.Net.WebClient())
{
var myTable = webClient.DownloadString(url);
var deserealizedTable = JsonConvert.DeserializeObject<MyClass>(myTable);
}
Run Code Online (Sandbox Code Playgroud)
密钥的提供者说我应该修改我的客户端以使用标题字段"Authentication-Token"和作为值提供的标记.
我希望能够调用我的Azure函数而不必指定键。该文档似乎表明将'authLevel'设置为匿名即可完成此操作:
authLevel:它确定需要哪些键(如果有的话)出现在请求上才能调用该函数。请参阅下面的使用键。该值可以是以下之一:
- 匿名:不需要API密钥。
- 函数:需要特定于函数的API密钥。如果未提供,则为默认值。
- admin:需要主密钥。
我的绑定是:
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"authLevel": "anonymous",
"webHookType": "genericJson",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
Run Code Online (Sandbox Code Playgroud)
但是,当我在没有键的情况下向函数发送请求时,会收到错误消息:
WebHook验证请求必须包含“代码”查询参数。
我在俯视什么?
我在Visual Studio中有3个项目.
我正在使用IdentityServer4与ASP.NET核心身份和实体框架.到目前为止,一切都很好.
现在,我想为用户添加生成API密钥的功能,以便用户可以通过他们的服务器调用我们的API服务器,只需传入API密钥即可.然后(以某种方式)将对用户进行身份验证并生成我的API用于授权的访问令牌.IdentityServer4是否支持为每个用户生成API密钥?我知道有客户机密,我已经实施但只能识别客户端.我也需要了解用户,所以我知道用户有权做什么(现在使用角色).
有人可以帮助我解决Firebase安全问题吗?
这是我试图弄清楚的:
我了解到,要让客户端与我的Firebase应用程序,配置进行交互, firebase.initializeApp(config)并将其公开,并且使用客户端的每个人都可以在浏览器开发人员控制台中看到它。
我也知道这很好,因为我可以使用安全规则和身份验证来保护数据。
但是,如果有人复制了我所有的客户端代码(包括配置)并构建了许多克隆站点,那么他们可以根据需要使用我的Firebase数据库了吗?
在这种情况下,我是否应该将configs(api键)隐藏到后端(如云函数)?谢谢...
api-key ×10
api ×3
google-maps ×3
flutter ×2
android ×1
asp.net-core ×1
azure ×1
c# ×1
firebase ×1
http-headers ×1
javascript ×1
obfuscation ×1
rest ×1