Javascript 如何解决;idpiframe“初始化失败”;对于本地主机?

Javascript 如何解决;idpiframe“初始化失败”;对于本地主机?,javascript,google-api,google-oauth,Javascript,Google Api,Google Oauth,这是我的初始化代码: function HandleGoogleApiLibrary() { // Load "client" & "auth2" libraries gapi.load('client:auth2', { callback: function () { // Initialize client &

这是我的初始化代码:

            function HandleGoogleApiLibrary() {
                // Load "client" & "auth2" libraries
                gapi.load('client:auth2', {
                    callback: function () {
                        // Initialize client & auth libraries
                        gapi.client.init({
                            apiKey: 'My API Key',
                            clientId: 'My Client ID',
                            scope: 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/plus.me'
                        }).then(
                            function (success) {
                                console.log("Yaaay");
                            },
                            function (error) {
                                console.log("Nope");
                                console.log(error);
                            }
                        );
                    },
                    onerror: function () {
                        // Failed to load libraries
                    }
                });
            }
这会给我以下错误消息:

details: "Not a valid origin for the client: http://127.0.0.1 has not been whitelisted for client ID 388774754090-o7o913o81ldb2jcfu939cfu36kh9h0q6.apps.googleusercontent.com. Please go to https://console.developers.google.com/ and whitelist this origin for your project's client ID."
error: "idpiframe_initialization_failed"
我的应用程序还没有投入生产,所以为了开发,我使用localhost。问题是,在我发现的每个堆栈溢出/引用上,他们都指定在
authorized JavaScript origins
authorized redirect uri
上,我必须使用
http://localhost
而不是
http://127.0.0.1
。如果我这样做,我会得到那个错误,并且拒绝为目标域生成登录提示的
权限。
如果我尝试登录

如果我使用
http://127.0.0.1
在这两种情况下,我都没有得到
idpiframe\u初始化\u初始化失败
,但在尝试登录时获得相同的权限被拒绝


这毫无意义,没有其他方法来指定localhost,我就是不能使用API

为了保存将来的读者,我通过准确键入
http://www.localhost
在客户端ID创建(凭据/开发人员控制台)中的“授权Javascript源代码”上。完全不明显和反用户,但都不是
http://localhost
http://127.0.0.1
起作用了。

在我的情况下,这是两方面的问题

  • 需要添加来源到谷歌控制台

    origin看起来怎么样

  • 清除缓存

    这有时不起作用,您可能会开始认为这不是缓存问题。详情如下


  • 1。如何将您的源站添加到谷歌控制台?

    • 到这里:
    • 在顶部选择您需要的项目
    • 查找
      OAuth 2.0客户端ID
      ,并在本节中选择(或创建)客户端ID
    • 在打开的窗口中找到
      Restrictions->Authorized JavaScript origins
      部分,然后添加
      http://localhost
      http://localhost:8000
      (指定所需的端口)
    2。清除缓存。

    如果步骤1没有解决问题,则需要清除缓存

    如果您只想删除
    localhost
    缓存,则在
    Chrome
    中,您可以采用下一种方法:

    • 打开设置->更多工具->开发者工具
    • 右键单击重新加载按钮->空缓存和硬重新加载

    有时缓存清除不起作用。为了确定这仍然是一个缓存问题,请使用匿名模式打开浏览器并再次检查您的站点。

    对于我来说,问题是通过禁用AdBlocker解决的。

    您似乎在google api控制台中启用了api限制(api密钥带有HTTP引用限制),转到google开发者控制台,将127.0.0.1添加到允许的域或ipNope中,我已经检查过了。在“申请限制”项下没有限制(无)。另外,在OAuth同意屏幕上,在“授权域”中,我不能放置127.0.0.1或localhost,它说:无效域:必须是顶级私有域。您还可以检查这是否导致问题吗?不,不阻止Cookie。我在试着用。对我来说没用。我已经尝试了本页中介绍的所有解决方案。有什么问题吗?它对我不起作用,它说“无效源:必须以公共顶级域(如.com或.org)结尾。”