实现登录第三方网站 内嵌二维码方式登录授权
(loginResult) => {
const {redirectUrl, authCode, state} = loginResult;
// 这里可以直接进行重定向
window.location.href = redirectUrl;
// 也可以在不跳转页面的情况下,使用code进行授权
console.log(authCode);
},
目前用的刷新时调用:
window.DTFrameLogin()``` 两次
这个方法调用两次,扫码以后触发方法也会触发两次。有没有争取的刷新二维码的方法。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
为了解决您提到的在实现登录第三方网站时,内嵌二维码方式登录授权过程中遇到的问题,即调用window.DTFrameLogin()
方法两次导致扫码后触发方法也执行两次的情况,我们可以采取以下策略优化这一流程:
window.DTFrameLogin()
初始化二维码登录之前,设置一个标志变量(如let isQRCodeScanned = false;
)来记录二维码是否已被扫描。let isQRCodeScanned = false;
function onQRCodeScan(loginResult) {
if (isQRCodeScanned) return; // 如果已扫描,直接返回
isQRCodeScanned = true;
const {redirectUrl, authCode, state} = loginResult;
// 这里可以直接进行重定向
window.location.href = redirectUrl;
// 或者根据需要处理authCode和state,例如非页面跳转的授权处理
console.log(authCode);
}
// 初始化二维码登录
window.DTFrameLogin(onQRCodeScan);
isQRCodeScanned
标志为false
,然后重新调用window.DTFrameLogin(onQRCodeScan)
以生成新的二维码,同时确保之前的扫码状态被正确清理。<button id="refreshQR">刷新二维码</button>
<script>
document.getElementById('refreshQR').addEventListener('click', () => {
isQRCodeScanned = false;
window.DTFrameLogin(onQRCodeScan);
});
</script>
通过上述方案,您可以有效地控制二维码的刷新逻辑,避免因多次调用扫码回调函数而导致的重复处理问题。这样既保证了用户体验,又确保了逻辑的清晰与高效。