javascript - FB.login() 在 Android Chrome 上失败并显示 "Unsafe JavaScript attempt to initiate navigation for frame"但不是桌面 Chrome

标签 javascript facebook google-chrome cross-domain facebook-javascript-sdk

我这里有一个 Facebook JS SDK 登录流程:https://web.triller.co/#/user/login

当用户点击 Facebook 按钮时,将执行以下功能:

loginFacebook()
{
    const fbPromise = new Promise((resolve, reject) => {
        FB.login(resp => {
            if (resp.authResponse)
            {
                resolve(resp.authResponse.accessToken);
            }
            else
            {
                console.log(resp);
                reject(new Error('Facebook login canceled or failed.'));
            }
        });
    });

    return fbPromise
        .then(accessToken => api.postJson('user/login_facebook', { accessToken }))
        .then(this._handleLogin.bind(this));
}

基本上,它会调用 FB.login(),并期望收到有效的 resp.authResponse。不幸的是,即使在 Facebook 弹出窗口/标签上成功验证后,它也没有。相反,我们从浏览器收到 { authResponse: undefined, status: undefined } 和以下错误:

Unsafe JavaScript attempt to initiate navigation for frame with URL 'https://m.facebook.com/v2.8/dialog/oauth?foo=bar' from frame with URL 'https://web.triller.co/#/user/login?_k=cmzdb6'. The frame attempting navigation is neither same-origin with the target, nor is it the target's parent or opener.

在 Facebook 弹出窗口/选项卡中进行身份验证后立即发生错误,并且仅在 Android Chrome 上发生。桌面版 Chrome(在 Mac 上)不会显示相同的错误。 iOS 上的 Safari 也不显示错误。

对发生的事情有什么想法吗?为什么 Android Chrome 和桌面版 Chrome 有区别?它可能与 URL 中的哈希值有关吗?

最佳答案

在台式机中,此问题可能是由 XFINITY Constant Guard Protection Suite Chrome 扩展引起的。禁用它,问题将得到解决。

在 Android 中,尝试删除 XFINITY 或类似的安全扩展程序或应用程序(诺顿安全防病毒软件)。

https://developer.salesforce.com/forums/?id=906F00000008qKnIAI

关于javascript - FB.login() 在 Android Chrome 上失败并显示 "Unsafe JavaScript attempt to initiate navigation for frame"但不是桌面 Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024905/

相关文章:

javascript - <label> 用于具有重复 ID 的属性选择器

javascript - 如何隐藏 jquery 中的文本框以进行初始加载?

javascript - 如何在 Chrome 扩展中将 URL 与片段标识符匹配?

javascript - 如何以编程方式处理 net::ERR_INSECURE_RESPONSE

javascript - 下面的 Chrome 扩展 javascript 代码片段到底是如何工作的?

javascript - 如何在我的代码中找到特定的 Javascript

javascript - 循环遍历数组以查找用户输入的索引,然后替换另一个数组的相同索引处的值

javascript - 防止弹窗被拦截

facebook - iPhone - UIWebview 不会将身份验证保存到站点

android - Firebase 与 Facebook 应用的动态链接