如何解决本地主机的“ idpiframe_initialization_failed”?

时间:2018-09-27 04:14:40

标签: javascript google-api google-oauth

这是我的初始化代码:

            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。事情是,在每个堆栈溢出/引用上,我发现他们已经指定在Authorised JavaScript originsAuthorised redirect URIs上我必须使用http://localhost而不是{{1 }}。如果执行此操作,则会收到该错误,如果尝试登录,则会显示http://127.0.0.1

如果我在两者上都使用Permission denied to generate login hint for target domain.,则初始化时不会获得http://127.0.0.1,但是尝试登录时却获得相同的权限被拒绝。

这没有任何意义,没有其他方法可以指定localhost,而我只是不能使用API​​。

4 个答案:

答案 0 :(得分:1)

为了节省将来的读者,我设法通过在客户端ID创建(凭据/开发者控制台)的“ Authorized Javascript Origins”(身份验证的Java起源)上准确键入http://www.localhost来从本地主机进行身份验证。完全不明显且反用户,但http://localhosthttp://127.0.0.1均无效。

答案 1 :(得分:1)

就我而言,这是两方面的问题。

  1. 需要将来源添加到Google控制台。

    原产地如何? http://localhost

  2. 清除缓存。

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


1。如何将您的来源添加到Google控制台?

  • 转到此处:https://console.cloud.google.com/apis/credentials
  • 在顶部选择一个需要的项目。
  • 找到OAuth 2.0 client IDs,然后在此部分中选择(或创建)客户ID。
  • 在打开的窗口中找到Restrictions -> Authorized JavaScript origins部分,并添加http://localhosthttp://localhost:8000(指定所需的端口)。

2。清除缓存。

如果步骤1不能解决问题,则需要清除缓存。

如果您只想删除localhost缓存,则可以在Chrome中以以下方式进行删除:

  • 打开设置->更多工具->开发人员工具;
  • 右键单击“重新加载”按钮->“清空缓存并重新加载”。

有时无法清除高速缓存。为了确保它仍然是缓存问题,请使用隐身模式打开浏览器,然后再次检查您的网站。

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

我遇到了同样的问题,我搜索了3天:解决“ popup_closed_by_user”转到您的console.google转到您的API管理:凭据:修改您的凭据:

授权的JavaScript起源(http://localhost:port);授权的重定向URI ( http://localhost:port/auth/google/callback)

示例:||授权的Java脚本来源(http://localhost:4200);授权的重定向URI ( http://localhost:4200/auth/google/callback) ||