gpt4 book ai didi

angularjs - 如何在 Angular Web 应用程序中使用 Firebase 隐形 reCAPTCHA?

转载 作者:行者123 更新时间:2023-12-03 00:31:10 29 4
gpt4 key购买 nike

希望看到一个可行的示例。搜索了好久,似乎无法在本地运行。始终显示隐私条款 Logo ,并且用户必须与验证码交互。

这是一个codepen我创建它是为了加快速度。

来自Firebase-Docs :

Use invisible reCAPTCHA

To use an invisible reCAPTCHA, create a RecaptchaVerifier object with the size parameter set to invisible, specifying the ID of the button that submits your sign-in form.

window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('sign-in-button', {
'size': 'invisible',
'callback': function(response) {
// reCAPTCHA solved, allow signInWithPhoneNumber.
onSignInSubmit();
}
});

基本上我对 init 的看法是:

window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('phone-sign-in-recaptcha', {
'size': 'invisible',
'callback': function(response) {
// reCAPTCHA solved - will proceed with submit function
console.log(response);
},
'expired-callback': function() {
// Reset reCAPTCHA?
}
});
<form name="mobile" novalidate>
<label class="item item-input">
<i class="icon placeholder-icon"></i>
<input type="tel" name="number" ng-model="$ctrl.user.mobile">
</label>
<button id="sign-in-button" ng-click="$ctrl.onSignInSubmit(user.mobile)"></button>
</form>
<div id="phone-sign-in-recaptcha"></div>

这是提交时调用的函数:

ctrl.onSignInSubmit = function() {
var phoneNumber = '+1' + ctrl.user.mobile;
var appVerifier = window.recaptchaVerifier;

firebase.auth()
.signInWithPhoneNumber(phoneNumber, appVerifier)
.then(function(confirmationResult) {
ctrl.hasCodeToVerify = true;
console.log('confirmationResult', confirmationResult);
window.confirmationResult = confirmationResult;
}).catch(function(error) {
console.log('error', error);
});
};

最佳答案

这是一个使用不可见 reCAPTCHA 的工作示例:

https://github.com/firebase/quickstart-js/blob/master/auth/phone-invisible.html

在您的代码中,在调用 signInWithPhoneNumber 之后,不可见的 reCAPTCHA 应该显示一个挑战,解决后,用 confirmationResult 解决悬而未决的 promise 。 ,或者直接解决而不显示任何挑战。

当该 promise 以 confirmationResult 解决时,您应该向用户询问短信代码。然后您调用confirmationResult.confirm(code)这将完成用户的登录。

firebase
.auth()
.signInWithPhoneNumber(phoneNumber, appVerifier)
.then(function(confirmationResult) {
var code = window.prompt("Please enter your code");
return confirmationResult.confirm(code);
})
.then(function(result) {
// User is signed in now.
})
.catch(function(error) {
console.log("error", error);
});

关于angularjs - 如何在 Angular Web 应用程序中使用 Firebase 隐形 reCAPTCHA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46878179/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com