Javascript Chrome自动登录-弃用通过';密码凭证';将对象放入';获取-如何解决?

Javascript Chrome自动登录-弃用通过';密码凭证';将对象放入';获取-如何解决?,javascript,google-chrome,credentials,Javascript,Google Chrome,Credentials,您好,如果已知客户,我们将使用以下流程触发自定义Chrome登录事件。最近我们遇到了这个警告 (索引):1259[弃用]将“PasswordCredential”对象传递到“fetch(…,{credentials:…})”已弃用,将于2017年10月左右在M62中删除。看见https://www.chromestatus.com/features/5689327799500800 有关更多详细信息和https://developers.google.com/web/updates/2017/0

您好,如果已知客户,我们将使用以下流程触发自定义Chrome登录事件。最近我们遇到了这个警告

(索引):1259[弃用]将“PasswordCredential”对象传递到“fetch(…,{credentials:…})”已弃用,将于2017年10月左右在M62中删除。看见https://www.chromestatus.com/features/5689327799500800 有关更多详细信息和https://developers.google.com/web/updates/2017/06/credential-management-updates 关于迁移建议。

我们使用以下命令登录客户

我的问题是:1)我们如何缓解/解决上述“弃用”问题?和2)是否有更原生/标准的方法要求确认登录?(首选用户自己的浏览器语言)


window.onload=函数(e){
var-debug=false;
var_Waitandask=1800;
var start=新日期()
var_askforconfirmation=false;
var cookie\u name=“智能锁\u取消\u cookie”;
var smartlock\u cancel\u cookie=getCookie(cookie\u名称);
如果(智能锁\u取消\u cookie){
返回
}否则{
navigator.credentials.get({
密码:true,
}).然后(功能(cred){
国际单项体育联合会{
如果(cred.type=='password'){
var form=new FormData();
cred.additionalData=表格;
cred.additionalData.append(“form_key”、“SECRET”);
var url='1〕https://ourdomain.com/webcustomer/account/loginpostgoogle/';
如果(_askforconfirmation&&confirm('安全登录网站?请确认')){
获取(url{
方法:“POST”,
证书:cred
}).然后(功能(响应){
如果(response.status==202){
如果(调试){
log('登录成功;现在重新加载');
返回;
}
navigator.credentials.store(cred);
window.location.reload();
}
如果(调试){
console.log('Server status:'+response.status);
}
返回;
}).catch(函数(err){
log('Smartlock Ajax错误:'+错误消息);
}).然后(总是,总是);
}否则{
expiry.setDate(start.getDate()+(_waitandask));
document.cookie=cookie_name+“=true;expires=“+expire.togmString()+”;path=/”;
返回;
}
}
}否则如果(cred的类型==“未定义”){
var end=新日期();
如果(+end>=(+start+100)){
如果(调试){
log(“检测到手动取消-太慢”);
}
expiry.setDate(start.getDate()+(_waitandask));
document.cookie=cookie_name+“=true;expires=“+expire.togmString()+”;path=/”;
}
如果(调试){
console.log(“凭证未定义”);
}
返回;
}
});
}
}

1)不要在获取中发送凭证对象,而是手动将凭证对象中的对象内容附加到表单(或JSON)中

fetch(url, {
    method: 'POST',
    credentials: cred // NO
}

// example with JSON
fetch(url, {
    method: 'POST',
    body: JSON.stringify({
      pass: cred.password,
      id: cred.id,
      "form_key": "SECRET"
    })
}
2) 在这方面没有标准,用户体验完全取决于您

fetch(url, {
    method: 'POST',
    credentials: cred // NO
}

// example with JSON
fetch(url, {
    method: 'POST',
    body: JSON.stringify({
      pass: cred.password,
      id: cred.id,
      "form_key": "SECRET"
    })
}