谷歌+;cb=gapi.loaded_0:41处的Javascript Signin Uncaught TypeError

谷歌+;cb=gapi.loaded_0:41处的Javascript Signin Uncaught TypeError,javascript,login,google-plus,Javascript,Login,Google Plus,我正试图在一个网站上实现Google+登录,遵循混合登录系统的说明。我更喜欢有自己的登录按钮,所以我选择通过普通的JavaScript方法gapi.auth.sign实现G+sign,并遵循中的说明 这是我主页上启动登录的按钮- <a id="gplogin" href="#"> <img src="{% static 'images/gp.png' %}"/> </a> 这里是GPLogin()部分,可能就是它抛出Javascript异常的地方- fu

我正试图在一个网站上实现Google+登录,遵循混合登录系统的说明。我更喜欢有自己的登录按钮,所以我选择通过普通的JavaScript方法gapi.auth.sign实现G+sign,并遵循中的说明

这是我主页上启动登录的按钮-

<a id="gplogin" href="#">
  <img src="{% static 'images/gp.png' %}"/>
</a>
这里是GPLogin()部分,可能就是它抛出Javascript异常的地方-

function GPLogin() {
    // Define all the login params
    var additionalParams = {
        'clientid' : 'xxxxxxxx.apps.googleusercontent.com',
        'scope' : 'https://www.googleapis.com/auth/plus.login',
        'redirecturi' : 'postmessage',
        'requestvisibleactions' : 'http://schema.org/AddAction',
        'cookiepolicy' : 'single_host_origin',
        'accesstype' : 'offline',
        // 'approvalprompt' : 'force',
        'callback': gpSigninCallback
    };
    console.log('Logging in to Google Plus with additional params - ');
    for(var param in additionalParams)
        console.log(param + " : " + additionalParams[param])

    gapi.auth.signIn(additionalParams);
}
这是我的gpSigninCallback函数,由于单击“gplogin”链接时引发异常,因此从未调用该函数

function gpSigninCallback(authResult) {
console.log("GP Signin response " + authResult);
for(var res in authResult)
    console.log(res + " : " + authResult[res]) }
单击gplogin链接时引发的异常是

Uncaught TypeError: Cannot convert object to primitive value at cb=gapi.loaded_0:41
正如在铬中观察到的那样


用户选择弹出窗口如预期的那样出现,我可以选择用户,但在这之后任何地方都不会发生任何事情。我很确定这是一件我在某处忽略的小事,但我自己找不到。任何帮助都将不胜感激。谢谢大家!

在进行了大量搜索之后,我将范围缩小到了我自己的简单Javascript错误。我首先对所有调试语句进行注释,并按原样打印对象。这就是我发现我的回调函数在一次迭代中为authResult[res]获取一个对象的地方,因为我试图将它连接到一个字符串,所以抛出了一个TypeError


Google Plus的登录流程一直都很好,我的JS就是问题所在。当尝试记录附加参数[param]时,它在GPLogin()中起作用,因为它们都是字符串,并且与字符串连接没有问题。

我想我应该澄清一下,我正在加载页面中的G+JS API-
,作为函数名/字符串传递的回调参数或函数对象本身没有任何区别。
Uncaught TypeError: Cannot convert object to primitive value at cb=gapi.loaded_0:41