Google JavaScript API在客户端初始化

时间:2017-03-22 16:19:02

标签: javascript google-api google-signin google-client gapi

我的同事创建了一个新的仓库,在他们的机器上加载Google JS API没有问题,但是当我尝试运行gapi.client.init时,它会返回以下错误。

{
  "error" : "invalid_request",
  "error_description" : "invalid login_hint."
}

当我查看网络上的请求时,它会发送一个值为login_hint的字符串作为查询字符串参数,但我的代码库中没有该字符串。

login_hint:AJDLj6...iriMjPL4JkmR_A

如果我从Google API控制台创建一组新的凭据并使用新的客户端ID,则可以按照我的预期运行。但是使用现有的凭证集会导致错误,而不会更改任何其他内容。

我的代码如下所示:

export class GoogleApiService {

    CLIENT_ID: string = '<removed>.apps.googleusercontent.com';
    DISCOVERY_DOCS = ['<removed>'];
    SCOPES = '<removed>';

    constructor() {
        window['initGapi'] = (ev) => {
            this.handleClientLoad();
        };
        this.loadScript();
    }

    loadScript() {
        let script = document.createElement('script');
        script.src = 'https://apis.google.com/js/api.js?onload=initGapi';
        script.type = 'text/javascript';
        document.getElementsByTagName('head')[0].appendChild(script);
    }

    handleClientLoad() {
        gapi.load('client:auth2', this.initClient.bind(this));
    }

    initClient() {
        gapi.client.init({
            discoveryDocs: this.DISCOVERY_DOCS,
            clientId: this.CLIENT_ID,
            scope: this.SCOPES
        }).then(() => {
          console.log('loaded');
        },
        (err) => console.error(err));
    }
}

我没有指定login_hint,那么为什么要将请求发送给Google呢?为什么不正确?如何防止出现错误消息?

1 个答案:

答案 0 :(得分:0)

为了它的价值,我最终退出了我的Google帐户,点击了我的应用中的注册链接,然后在弹出窗口中登录了我的Google帐户,现在一切正常,我无法重现。不确定是什么原因造成的,但那是我的解决方案。

希望我的用户永远不会遇到这个问题。