在 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:实时更新代码库

Cordova/Phonegap 构建无法找到 HTML 模板

如何在 file:/// 协议 (Cordova/Phonegap) 下使用来自 dojo 的自定义构建

在 iOS 上调试 Cordova (PhoneGap) 代码

Cordova/Phonegap:无法让 Facebook Phonegap 插件工作