在 cordova/phonegap 应用程序中使用 reCaptcha
Posted
技术标签:
【中文标题】在 cordova/phonegap 应用程序中使用 reCaptcha【英文标题】:reCaptcha usage in cordova/phonegap application 【发布时间】:2015-09-16 14:16:38 【问题描述】:我正在尝试将 google recaptcha 与 cordova html5 应用程序集成。但是cordova 在应用程序中使用文件协议。因此,在应用程序中使用验证码会给出 “错误:站点密钥的域无效”。
我正在使用 cordova 3.5.0 来构建应用程序,并在 config.xml 中添加了<access origin="*" />
。
recaptcha 是否只能用于 Web 应用程序而不能用于混合/原生应用程序?
【问题讨论】:
【参考方案1】:由于协议问题,reCaptcha 不能直接用于 cordova 项目。要么
-我们必须在单独的 webview
中加载 reCaptcha url-使用安全令牌方式加载他们最近推出的reCaptcha (https://developers.google.com/recaptcha/docs/secure_token)
【讨论】:
这个答案现在过时了吗?似乎删除了域名验证后,我们可以在 Cordova 项目中使用 reCaptcha。 @theunexpected1 您是否测试过删除域名验证?这对我没有任何影响! @AlirezaMirian,同样,它对我不起作用。以前可能有这种可能,但现在根本行不通。在我的用例中,我依赖于重定向到移动浏览器,以防出现验证码情况。希望对您有所帮助。 不建议使用安全令牌,因为它现在已被弃用。【参考方案2】:我使用cordova-plugin-ionic-webview
成功地使它工作
请注意,我的项目不是 Ionic 项目,所以任何 cordova 项目都可以使用它
我做了什么:
配置Re-Captcha admin console 以允许myapp.local
域
配置cordova-plugin-ionic-webview
preferences:
在config.xml
文件中添加<preference name="Hostname" value="myapp.local" />
在config.xml
文件中添加<allow-navigation href="https://www.google.com/recaptcha/*" />
在config.xml
文件的android特定部分添加<allow-navigation href="http://myapp.local/*" />
安装 ionic webview 插件:cordova plugin add cordova-plugin-ionic-webview@4.1.3
在您的index.html
文件中添加recaptcha(在我的情况下为v3):<script type="text/javascript" src="https://www.google.com/recaptcha/api.js?render=MY_RECAPTCHA_KEY_HERE"></script>
在你的 JS 代码中调用 recaptcha API:
grecaptcha.ready(function()
grecaptcha.execute("MY_RECAPTCHA_KEY_HERE", action: 'my-page').then(function(token)
console.log("Acquired recaptcha token : ", token);
, function()
console.error("ReCaptcha token acquisition failed", arguments);
);
);
【讨论】:
这应该被接受为答案【参考方案3】:您现在应该使用您的应用程序包名称(2017 年 11 月)。作为 reCaptcha 配置的一部分,您指定将使用该服务的域或移动包名称。如果您使用“localhost”进行开发,则必须将其添加到域列表中。
对于移动用户,API 密钥对仅对指定的包名称(例如,com.google.recaptcha.test)是唯一的。
但是,如果您的域名或程序包名称列表非常长、不稳定或未知,您可以选择在 reCAPTCHA 端关闭域名或程序包名称检查,而是在您的服务器上进行检查。
不建议使用安全令牌,因为这现在是一个弃用的功能。
参考:
Domain/Package Name Validation【讨论】:
您的意思是您可以通过简单地将 Android 应用程序包名称添加到允许的域列表中来使用用于移动网站的常规 recaptcha V2 吗?以上是关于在 cordova/phonegap 应用程序中使用 reCaptcha的主要内容,如果未能解决你的问题,请参考以下文章
在 cordova/phonegap 应用程序中使用 reCaptcha
Cordova/Phonegap 构建无法找到 HTML 模板
如何在 file:/// 协议 (Cordova/Phonegap) 下使用来自 dojo 的自定义构建